2012-09-24 87 views
0

我不知道如何定義宏字符串與變量,如下所示:
#define str(x) "file x.txt",這意味着我希望str(1)引用「文件1.txt」。 但是,在這種情況下,str(1)或任何數字都指「文件x.txt」,因爲x是一個字符。
有什麼辦法可以解決這個問題嗎?宏字符串與變量

+0

的 「可變」 可能會非常棘手。如果你有'int foo = 5; STR(foo)'你還在談論'file foo.txt',而不是'file 5.txt'。在變量賦值之前,宏在編譯時的工作。 – MSalters

回答

5

串聯串:

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

這使得使用兩種語言的詞彙特徵的:相鄰的字符串文字被串接;請參見C++ 11 2.2/6和C11 5.1.1.2/6:

將相鄰字符串文字標記連接在一起。

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

使用字符串化操作#