2013-11-23 140 views
1

我試圖創建__declspec(naked)功能宏,但我不斷收到以下錯誤:C++宏裝配誤差

'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} 
+0

\行的末尾被轉換爲空格,換行消失。我懷疑彙編程序不喜歡在一行中給出三條指令。是「;」合法分開說明? –

+0

不,';'也沒有工作。 – user3025332

回答

1

嘗試擺脫大括號,並把__asm之前,每條指令。這樣編譯器就可以知道每條指令的起始位置。