今天在写一个宏时始终报
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++