在宏中连接字符串 - C ++

时间:2009-11-15 22:33:01

标签: c++ c string concatenation

连接宏中定义的字符串的最简单方法是什么。 即我正在寻找的伪代码就像:

#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等,而不是有很多局部变量。有没有办法做到这一点?

感谢。

2 个答案:

答案 0 :(得分:45)

编译器将自动连接相邻的字符串:

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

答案 1 :(得分:-4)

壳牌正在“吃掉”报价。 因此,必须使用以下行:

-DROOT_PATH=\"some-string"\