C/C++ 語句{__asm int 3;} 能在VC下編譯的過麼?
阿新 • • 發佈:2018-12-27
今天在寫一個巨集時始終報
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
__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++