代码之家  ›  专栏  ›  技术社区  ›  RedX

“asm宏”是标准C的一部分吗?

  •  3
  • RedX  · 技术社区  · 11 年前

    我们为嵌入式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 回复  |  直到 11 年前
        1
  •  4
  •   Carl Norum    11 年前

    不,它不是标准的C。任何特定于体系结构的东西,比如汇编代码,都将是一个定义为特定于实现的扩展。

        2
  •  0
  •   Clifford    11 年前

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

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

    它用于定义宏对我来说是新的,但很有趣。