在宏中连接字符串 - C++
问题描述:
连接宏中定义的字符串的最简单方法是什么? 即我在寻找的伪代码将是这样的:在宏中连接字符串 - 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等等,而不是有很多本地变量。有没有一个好的方法来做到这一点?
谢谢。
答
编译器会自动串联邻近的字符串:
#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)
答
壳牌 “吃” 的报价。 因此,下面的线必须使用:
-DROOT_PATH=\"some-string"\