0

次のように、変数を使用してマクロ文字列を定義する方法がわかりません。
#define str(x) "file x.txt"つまり、 str(1) が「ファイル 1.txt」を参照することを望んでいます。ただし、この場合、x は文字であるため、str(1) または任意の数値は「ファイル x.txt」を参照します。
これを解決する方法はありますか?

4

2 に答える 2

5

文字列を連結します。

#define STR(x) "file " #x ".txt"

これは、2 つの言語の字句機能を利用します。隣接する文字列リテラルは連結されます。C++11 2.2/6 と C11 5.1.1.2/6 の両方を参照してください。

隣接する文字列リテラル トークンは連結されます。

于 2012-09-24T23:00:09.480 に答える
1
#define str(x) ("file " #x ".txt")

文字列化演算子の使用#

于 2012-09-24T23:00:13.103 に答える