在宏中连接字符串 - 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"\