1

是否可以在 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)

...

我知道我的版本显然是错误的,但这就是我想要存档的结果。

编辑:

我决定不为此使用宏。

4

2 回答 2

0

预处理只是在编译之前完成的文本替换。在这个阶段,我们因此不知道 的值int i

如果您希望在运行时连接文本字符串“f”和 i 的值,您可以这样做:

char buf[10];
snprintf(buf, 10, "f%i", i);

接着

CALL_SEARCH(buf, ...)
于 2013-10-14T00:07:59.863 回答
0

CONCATENATE创建“ fi”,而不是“ f1”。你想f成为一个数组并i用作它的索引。

于 2013-10-13T21:04:00.073 回答