2009-11-15 22 views
14

マクロで定義された文字列を連結する最も簡単な方法は何ですか? 私が探しているの擬似コードは次のようになりますつまり:私の知っている唯一の方法は、コードでSTRCATを使用することですマクロ内の文字列の連結 - 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" 

、または文字列クラスを使用して、c_strメソッドが、それは得ることができます私がたくさんの入力ファイルを持っているときに乱雑です。私はINPUT_FILE_Aなどを直接使用したいだけで、たくさんのローカル変数を持たないでください。これを行う良い方法はありますか?

ありがとうございました。

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

以上のジェネリック:

答えて

42

コンパイラが自動的に隣接する文字列を連結します

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

シェルは引用符を "食べました"。 したがって、次の行を使用する必要がありました。

-DROOT_PATH=\"some-string"\