c++缺少类型说明符:语法错误

C++ Missing type specifier: syntax error

本文关键字:语法 错误 说明符 类型 c++      更新时间:2023-10-16

我用c++中的windows弯道钩住了一个函数。

我得到以下代码中的错误:

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。提示:c++中不支持"default-int"。
错误C2373: 'asmFunction':用不同的说明符重定义
错误C2440: 'in initialization': 'void (__cdecl *)(const char *)'无法转换为'int'。没有上下文允许此转换。

昨天的代码工作。有什么问题吗?如何在不破坏钩子的情况下修复它?

此表达式需要在函数内,例如

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

去读一本关于c++的书。