是一个" asm Macro"标准C的一部分?

时间:2015-02-18 16:49:37

标签: c embedded

我们为嵌入式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之后和结束)之前的构造。

2 个答案:

答案 0 :(得分:4)

不,它不是标准的C.任何特定于体系结构的内容,如汇编代码,将根据定义成为特定于实现的扩展。

答案 1 :(得分:0)

asm关键字在C中不是标准的,它在C ++中保留,但在这两种情况下,语法都是特定于实现的,如here所述:

  

asm-declaration 可以在C ++程序中嵌入汇编语言源代码。该声明是有条件支持和实现定义的,这意味着它可能不存在,即使由实现提供,它也没有固定的含义。

用于定义宏对我来说是新的并且很有趣。