宏中的字符串拼接 - C++

18

最简单的将在宏中定义的字符串连接起来的方法是什么。 也就是说,我要找的伪代码应该像这样:

#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个回答

48
编译器会自动连接相邻的字符串:
#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)

-4

Shell 吞噬了引号。 因此,以下行必须使用:

-DROOT_PATH=\"some-string"\

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接