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 ループでやりたいことは次のようなものです。

search(f1, arg1, arg2, tol, max_tries)

search(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

CONCATENATEfi" " ではなく " "を作成しますf1f配列になり、iそのインデックスとして使用したい。

于 2013-10-13T21:04:00.073 に答える