在回答this问题时,我遇到了一个我不确定的解析问题。
根据MSDN __asm
关键字..cannot appear by itself. It must be followed by an assembly instruction, a group of instructions enclosed in braces, or, at the very least, an empty pair of braces.
..所以给出以下代码:
int main()
{
__asm
__asm
return 0;
}
删除其中一个__asm
关键字会产生语法错误(如预期的那样),但是
无论我输入多少空__asm
个关键字,只要有一个__asm
前面有另一个,它就可以很好地编译。
如果你自己把括号括起来也可以编译:
int main()
{
{__asm}
return 0;
}
那为什么这会正确编译而不会出错?这是一个解析错误还是我误解了某处的语法?
注意:我在VS2010和VS2012中只尝试过相同的结果,所以不确定其他版本的反应方式是否相同。