是否可以在for循环中使用串联?我的代码片段是这样的:
#define CONCATE(a, b) a ## b
#define CALL_SEARCH(n, x, y) search(n, arg1, arg2, x, y)
...
int i;
for (i = 1; i (less than or equal to) number; ++i)
{
results = CALL_SEARCH(CONCATE(f, i), tol, max_tries);
}
我想在这个for循环中做的是这样的:
搜索(f1,arg1,arg2,tol,max_tries)
搜索(f2,arg1,arg2,tol,max_tries)
...
我知道我的版本显然是错误的,但这是我要归档的结果。
修改
我决定不使用宏。
答案 0 :(得分:0)
CONCATENATE
创建“fi
”,而非“f1
”。您希望f
成为数组并使用i
作为索引。
答案 1 :(得分:0)
预处理只是在编译之前完成的文本替换。在这个阶段,我们因此不知道int i
的价值。
如果您希望在运行时连接文本字符串“f”和i的值,您可以这样做:
char buf[10];
snprintf(buf, 10, "f%i", i);
然后
CALL_SEARCH(buf, ...)