1. 程式人生 > >C/C++ 語句{__asm int 3;} 能在VC下編譯的過麼?

C/C++ 語句{__asm int 3;} 能在VC下編譯的過麼?

今天在寫一個巨集時始終報

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++