2009-11-15 52 views
14

連接宏中定義的字符串的最簡單方法是什麼? 即我在尋找的僞代碼將是這樣的:在宏中連接字符串 - C++

#define ROOT_PATH "/home/david/" 
#define INPUT_FILE_A ROOT_PATH+"data/inputA.bin" 
#define INPUT_FILE_B ROOT_PATH+"data/inputB.bin" 
... 
#define INPUT_FILE_Z ROOT_PATH+"data/inputZ.bin" 

我知道的唯一方法是在代碼中,或使用String類,然後c_str方法使用strcat的,但它可以得到當我有很多輸入文件時,會變得混亂。我想直接使用INPUT_FILE_A等等,而不是有很多本地變量。有沒有一個好的方法來做到這一點?

謝謝。

回答

42

編譯器會自動串聯鄰近的字符串:

#define ROOT_PATH "/home/david/" 
#define INPUT_FILE_A ROOT_PATH "data/inputA.bin" 

或多個通用:

#define INPUT_FILE_DETAIL(root,x) root #x 
#define INPUT_FILE(x) INPUT_FILE_DETAIL(ROOT_PATH "data/", x) 
-3

殼牌 「吃」 的報價。 因此,下面的線必須使用:

-DROOT_PATH=\"some-string"\