我需要使用宏来连接字符串以生成函数名。
#define CONCAT(a,b,c) a ## b
int i=1;
CONCAT(a,i)
此代码提供了ai
,而我想要的是a1
。
由于我的源代码中有很多函数,我不想枚举它们。
我的目标:
for(int i=0;i<100;i++)
{
Funi1();//here i should be from 0 to one hundred
Funi2();
Funi3();
Funi4();
..
}
@Potatoswatter
我编写了一个脚本来扩展它,输出文件花费了一百行。 @Eric Finn
答案 0 :(得分:8)
由于宏在预处理阶段被扩展,因此无法实现。 所以,它不能取变量和concat的值。
答案 1 :(得分:0)
如果有__COUNTER__
预定义宏,你可以在GCC和VC上使用它。它对你有帮助吗?
#include <stdio.h>
#define FUNC2(x,y) x##y
#define FUNC1(x,y) FUNC2(x,y)
#define FUNC(x) FUNC1(x,__COUNTER__)
int FUNC(my_unique_prefix);
int FUNC(my_unique_prefix);
int main() {
my_unique_prefix0 = 0;
printf_s("\n%d",my_unique_prefix0);
my_unique_prefix0++;
printf_s("\n%d",my_unique_prefix0);
}
来自here
的示例答案 2 :(得分:0)
你可以用gcc -E sourcecode.c预先编译它并观察它,它只是替换变量名,而不是得到值并且完全计算,所以不可能让它像你想要的那样工作。
答案 3 :(得分:0)
尝试使用 LINE 宏,它会给你数字:)如果你不关心1 + 1 + 1 + 1 喜欢 static int FUNCADD(一次, LINE )= 1; if(FUNCADD(一次, LINE )&gt; 0)
如果那是你的问题