web-dev-qa-db-ja.com

マクロ内の文字列の連結-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"

私が知っている唯一の方法は、コードでstrcatを使用するか、文字列クラスを使用してからc_strメソッドを使用することですが、入力ファイルがたくさんあると面倒になる可能性があります。 INPUT_FILE_Aなどを直接使用し、ローカル変数をあまり持たないようにしたい。これを行う良い方法はありますか?

ありがとう。

17
Switch

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

#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)
46
GManNickG