Перейти к содержанию

Вопрос про использование прототипов функций


Рекомендуемые сообщения

Код в общем просто будет показывать в игре надпись с тем, что какая-то функция в трейнере активирована или деактивирована, я ж ленивый, чтобы делать меню красивые.:D

typedef void(*IngameMessage)(DWORD*, char*, DWORD); //Gui, msg, CRC
auto Msg = memory->read<DWORD>(GUI_Base + 0x56);
auto (*RightGUIMsg)(DWORD*, char*, DWORD) = reinterpret_cast<IngameMessage>(Msg);

Для удобства чтения использовал typedef  Такой вопрос возник, обязательно ли, описывать аргументы в левой части кода? т.е тут:

auto (*RightGUIMsg)(DWORD*, char*, DWORD)

Или можно просто так писать:

auto *RightGUIMsg = reinterpret_cast<IngameMessage>(Msg);

 

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

33 минуты назад, elvis66666 сказал:

По идее можно :) Пробовал сам? работает? 

Не пробовал, было поздно, а если ночью засядешь что-то делать, то это до утра.:D Просто, никогда не видел присваивание типа указателю который без аргументов. Разницы особой нет видимо, но код выглядит по чище.

Ссылка на комментарий
Поделиться на другие сайты

12 минуты назад, partoftheworlD сказал:

Не пробовал, было поздно, а если ночью засядешь что-то делать, то это до утра.:D Просто, никогда не видел присваивание типа указателю который без аргументов. Разницы особой нет видимо, но код выглядит по чище.

Просто этой строчкой 

auto (*RightGUIMsg)(DWORD*, char*, int)

ты показываешь что указатель ссылается на функцию, а без нее компилятор не будет знать что это функция =\ И боюсь он просто не даст скомпилироваться, когда ты будешь вызывать его с параметрами.

Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, elvis66666 сказал:

не даст скомпилироваться, когда ты будешь вызывать его с параметрами.

Скомпилировалось отлично, игру установлю попробую как будет отрабатывать.

при наведении на RightGUIMsg студия пишет void(*RightGUIMsg)(DWORD*, char*, DWORD); видимо все нормально.

 

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

//А так помойму покрасивее, чем с TYPDEF ^_^
void (*RightGUIMsg)(char*, int,int,int);
void *MSG = reinterpret_cast<RightGUIMsg>(0x41FB50);
MSG("Hiho",0,0,0);
Изменено пользователем elvis66666
Ссылка на комментарий
Поделиться на другие сайты

TypeDef - грубо говоря это оператор переопределения структур а void обозначение метода(даже не так это не метод а тип возвращаемых данных) который не возвращает ничего назад.

 

Изменено пользователем saiberpro
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.