C++宏程序集错误

C++ Macro assembly error

本文关键字:错误 程序集 宏程序 C++      更新时间:2023-10-16

我试图为__declspec(naked)函数创建一个宏,但我一直收到以下错误:

'sub' identifier is reserved word
'mov' identifier is reserved word
inline assembler syntax error in 'first operand'; found'register'

这是我的宏:

#define NAKED_START __asm{push ebp
                      mov ebp, esp
                      sub esp, __LOCAL_SIZE
                     }

我真的必须使用这个吗:

#define NAKED_START __asm{push ebp}
                    __asm{mov ebp, esp}
                    __asm{sub esp, __LOCAL_SIZE}

试着去掉大括号,并将__asm放在每条指令之前。这样编译器就可以判断每条指令的起始位置。