今天在寫一個宏時始終報
fatal error C1075: end of file found before the left brace '{' at 'd:\xxx.cpp(49)' was matched
檢查排除代碼,去除了宏,留下了一句
{__asm int 3;}
將大括號去掉,能編譯成功。去掉;也能編譯成功
我就奇了怪了,查了MSDN文檔,里面是這么寫的:
__asm assembly-instruction [ ; ]
__asm { assembly-instruction-list } [ ; ]
- asm-statement:
-
__asm assembly-instruction ;opt
__asm { assembly-instruction-list };opt
- assembly-instruction-list:
-
assembly-instruction;opt
assembly-instruction;assembly-instruction-list;opt
也就是說 分號是可選的,這個類似于lua
不加分號也可以這樣寫
__asm mov al, 2 __asm mov dx, 0xD007 __asm out dx, al
于是乎,我想這成了一個VC的bug
編譯環境vs2008 c/c++