我们为嵌入式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
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 在结束之前 ) .
{ }
asm
)
不,它不是标准的C。任何特定于体系结构的东西,比如汇编代码,都将是一个定义为特定于实现的扩展。
这个 asm 关键字在C中不是标准的,它在C++中是保留的,但在这两种情况下,语法都是特定于实现的,如所述 here :
asm声明 提供了在C++程序中嵌入汇编语言源代码的能力。此声明是有条件支持的,并且定义了实现,这意味着它可能不存在,即使由实现提供,它也没有固定的含义。
它用于定义宏对我来说是新的,但很有趣。