通过 C++ 编译器的
-D
选项给定一个数字宏作为输入,我可以形成一个文件名以与其中的 #include
语句一起使用吗?例如,目前我可能有:
#include "data/1024_cadr.h"
...但我想在调用编译器期间通过使用
-DSIZE=1024
来形成此包含字符串。然后,我会在驱动编译器的脚本中使用它,并运行一些测试。我不想显式包含所有文件名,因为脚本在其他地方使用数值(此处为 1024)。
我尝试了以下(和其他想法),但没有运气:
#define str(x) #x
#include "data/"##str(SIZE)##"_cadr.h"
正如@Eljay 通过评论回答的那样,以下内容将完成这项工作:
#define MAKE_CADR3(x) #x
#define MAKE_CADR2(x) MAKE_CADR3(data/x##_cadr.h)
#define MAKE_CADR(x) MAKE_CADR2(x)
#include MAKE_CADR(SZ)