带变量的宏字符串

时间:2012-09-24 22:58:41

标签: c++ c

我不知道如何用变量定义宏字符串,如下所示:
#define str(x) "file x.txt",这意味着我希望str(1)引用“file 1.txt”。 但是,在这种情况下,str(1)或任何数字指的是“file x.txt”,因为x是一个字符。
有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:5)

连接字符串:

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

这使用了两种语言的词法特征:相邻的字符串文字被连接起来;参见C ++ 11 2.2 / 6和C11 5.1.1.2/6:

  

连接相邻的字符串文字标记。

答案 1 :(得分:1)

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

使用字符串化运算符#