内联汇编有两种形式,一种是
asm{
//...
}
另一个
asm(
"..."//work in my clang compiler
);
和__asm等,那么有什么区别? 我希望不仅仅是花括号和括号,
答案 0 :(得分:3)
C语言不支持嵌入式汇编程序,因此任何一种形式都是非标准的。每个编译器往往会以不同的方式执行此操作,因此语法会有所不同。
即使在C标准模式下进行编译,某些编译器也使用双下划线__
来允许所有非标准关键字。
与C不同,C ++确实通过asm("instruction");
形式的标准化来支持它。
答案 1 :(得分:0)
C标准的附录J内容丰富,并指出如果支持asm
(不一定是),则它应该采用以下形式
asm ( character-string-literal );
换句话说,使用括号的表示法可能不如使用括号的表示法那么常见。
(C ++的要求更高。)