我们为嵌入式PowerPC架构开发代码。
我们的编译器支持名为asm宏的东西。
这里摘自手册:
asm宏语法
asm宏定义看起来很像函数定义,包括返回类型和参数列表,以及函数体。
语法为:
asm [volatile] [return-type] macro-name ( [ parameter-list ] ) { % storage-mode-list (must start in column 1) ! register-list (“!” must be first non-whitespace) asm-code } (must start in column 1
这是标准C吗?我的编译器没有将其列为手册中的扩展名。
第一次回答后澄清:
我知道{ }
部分没有被标准C定义。我的意思是asm
之后和结束)
之前的构造。
答案 0 :(得分:4)
不,它不是标准的C.任何特定于体系结构的内容,如汇编代码,将根据定义成为特定于实现的扩展。
答案 1 :(得分:0)
asm
关键字在C中不是标准的,它在C ++中保留,但在这两种情况下,语法都是特定于实现的,如here所述:
asm-declaration 可以在C ++程序中嵌入汇编语言源代码。该声明是有条件支持和实现定义的,这意味着它可能不存在,即使由实现提供,它也没有固定的含义。
用于定义宏对我来说是新的并且很有趣。