今天在寫(xiě)一個(gè)宏時(shí)始終報(bào)
fatal error C1075: end of file found before the left brace '{' at 'd:\xxx.cpp(49)' was matched
檢查排除代碼,去除了宏,留下了一句
{__asm int 3;}
將大括號(hào)去掉,能編譯成功。去掉;也能編譯成功
我就奇了怪了,查了MSDN文檔,里面是這么寫(xiě)的:
__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
也就是說(shuō) 分號(hào)是可選的,這個(gè)類似于lua
不加分號(hào)也可以這樣寫(xiě)
__asm mov al, 2 __asm mov dx, 0xD007 __asm out dx, al
于是乎,我想這成了一個(gè)VC的bug
編譯環(huán)境vs2008 c/c++