Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Возврат значения из void функции

  • Автор темы Автор темы P45H3
  • Дата начала Дата начала
В игре Source SDK
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
10 Янв 2017
Сообщения
2,188
Реакции
806
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Думали, что нельзя вернуть значение из void функции?
Ага, хуй.
Код:
Expand Collapse Copy
void Func(){
static int i = 0;
return i;
}
Конечно не сработает, но как же костыли:roflanPominki:
0da2388e18b6.png
 
И зачем?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
void func(int& arg)
{
arg=19;
}


int parg;
func(parg) ;
print("%d", parg) ;
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Думали, что нельзя вернуть значение из void функции?
Ага, хуй.
Код:
Expand Collapse Copy
void Func(){
static int i = 0;
return i;
}
Конечно не сработает, но как же костыли:roflanPominki:
0da2388e18b6.png
Код:
Expand Collapse Copy
int Func2();
using tFunc2 = (decltype(&Func2));

void __stdcall Func()
{    
      static int i = 0;
       __asm
      {
             lea rcx, [i]
             mov rax, [rcx]
             ret
      }
}

void main()
{

       printf(“retval %d”, ((tFunc2)Func)());

}
 
Последнее редактирование:
Разве void* не сработает?
auto number = 1;
return *number;
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
#define VOID_RET(value) __asm mov eax, value
#define VOID_GET(func, value) __asm call func __asm mov value, eax
 
#define VOID_RET(value) __asm mov eax, value #define VOID_GET(func, value) __asm call func __asm mov value, eax
а если переменных более 2? а если это 64 разрядный проект?

Подобного рода задачи решаются с помощью ссылок либо двойных указателей
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
а если переменных более 2? а если это 64 разрядный проект?

Подобного рода задачи решаются с помощью ссылок либо двойных указателей
Кто-то говорил про 2 переменные? и x64? Я лишь показал возможный вариант и как видишь я не один здесь использую asm вставки
 
Все хуйня. void функция может вернуть значение только через in-out параметры или замыкании, если мы считаем лямбду функцией. Все любые другие попытки сделать компиляторозависимые трюки - undefined behaviour и точка
UPD: Еще можно исключение кинуть
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Кто-то говорил про 2 переменные? и x64? Я лишь показал возможный вариант и как видишь я не один здесь использую asm вставки
А кто-то говорил, что это 32 бита?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Господа, а собственно нах*я вы велосипед изобретаете? :NotLikeThis:
 
Назад
Сверху Снизу