我已经编写了这个宏来在C:
中添加汇编语言命令TEST_ASM(asm_command) asm( #asm_Command )
适用于单个命令,如:
TEST_ASM("nop")
TEST_ASM("write 0")
但是,为此:
TEST_ASM("e_li r3, 0x201")
它给出错误:
宏“TEST_ASM”传递了2个参数,但
只需1
此错误是由asm
命令中的逗号引起的,该命令查找下一个参数。
宏是否可能将逗号作为字符串?
我不想使用变量参数宏,因为它会在静态分析中发出警告。
答案 0 :(得分:2)
请勿在宏中使用字符串化,以下代码段适用于gcc:
#define TEST_ASM(asm_Command) asm( asm_Command )
int main()
{
TEST_ASM("mov $1,%eax");
return 0;
}