为什么这个__asm代码编译?

时间:2015-07-07 10:58:25

标签: c++ visual-studio inline-assembly

在回答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中只尝试过相同的结果,所以不确定其他版本的反应方式是否相同。

0 个答案:

没有答案