C ++ Отсутствует спецификатор типа: синтаксическая ошибка - PullRequest
0 голосов
/ 10 июля 2011

Я перехватываю функцию с обходом окон в C ++.

Я получаю ошибку в следующем коде:

void (*asmFunction)(const char *text);
void hookFunction(const char *text) {
    __asm nop;
    asmFunction(text);
}
asmFunction = (void (__cdecl *)(const char *))DetourFunction((PBYTE)0x433A90, (PBYTE)&hookFunction);

Компилятор (MSVC ++ 2008) говорит:

ошибка C4430: отсутствует спецификатор типа - предполагается int.Подсказка: "default-int" не поддерживается в C ++. Yadda yadda…
ошибка C2373: «asmFunction»: переопределение с различными спецификаторами
ошибка C2440: «в инициализации»: «void (__cdecl *) (const char *)» не может быть преобразовано в'INT'.Нет контекста, в котором это преобразование действительно.

Код работал вчера.Что с этим не так?Как я могу исправить это, не разрушая крюк?

1 Ответ

4 голосов
/ 10 июля 2011

Это выражение должно быть внутри функции, например,

int main() {
    asmFunction = (void (__cdecl *)(const char *))DetourFunction(
        (PBYTE)0x433A90, (PBYTE)&hookFunction
    );
    // ...
}

Перейти читать книгу на C ++ .

...