0
我不知道如何定義宏字符串與變量,如下所示:
#define str(x) "file x.txt"
,這意味着我希望str(1)引用「文件1.txt」。 但是,在這種情況下,str(1)或任何數字都指「文件x.txt」,因爲x是一個字符。
有什麼辦法可以解決這個問題嗎?宏字符串與變量
我不知道如何定義宏字符串與變量,如下所示:
#define str(x) "file x.txt"
,這意味着我希望str(1)引用「文件1.txt」。 但是,在這種情況下,str(1)或任何數字都指「文件x.txt」,因爲x是一個字符。
有什麼辦法可以解決這個問題嗎?宏字符串與變量
串聯串:
#define STR(x) "file " #x ".txt"
這使得使用兩種語言的詞彙特徵的:相鄰的字符串文字被串接;請參見C++ 11 2.2/6和C11 5.1.1.2/6:
將相鄰字符串文字標記連接在一起。
#define str(x) ("file " #x ".txt")
使用字符串化操作#
的 「可變」 可能會非常棘手。如果你有'int foo = 5; STR(foo)'你還在談論'file foo.txt',而不是'file 5.txt'。在變量賦值之前,宏在編譯時的工作。 – MSalters