我需要扩展成多行代码的宏。例如:
#define foo(...)
foo(something, something_else, ...)
...
应转换为:
something
something_else
...
而不是:
something something_else ...
另外,如果您想知道我为什么需要这样的东西。我需要生成这样的代码,新行是内联汇编语法的一部分。
_asm
{
mov eax, 3
div 5
}
我对实现此目标的任何形式都很感兴趣,因此欢迎提出所有建议。
阅读后的一个想法this answer .是否可以为新行创建一个宏并调用 foo(something, NL, something_else, NL, ...)
?
我也对可变版本更感兴趣,但了解更简单的版本也可能有所帮助。
最佳答案
这可能会提供一点帮助,只是给你一个想法
#include "stdio.h"
#define EXPAND_MULTIPLE_LINES(X, Y, Z) /*
*/ X /*
*/ Y /*
*/ Z
int main()
{
int X, Y, Z;
EXPAND_MULTIPLE_LINES(X, Y, Z);
return 0;
}
使用 gcc -E -CC testMacro.c
输出像
# 844 "/usr/include/stdio.h" 3 4
# 2 "testMacro.c" 2
# 12 "testMacro.c"
int main()
{
int X, Y, Z;
/*
*/ X /*
*/ Y /*
*/ Z;
# 18 "testMacro.c"
return 0;
}
关于c++ - 生成的代码中带有新行的 C 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31648349/