从数字形成 #include 文件名

Forming a #include file name from a number

提问人:user2023370 提问时间:10/29/2023 更新时间:10/29/2023 访问量:43

问:

通过 C++ 编译器的选项给定一个数字宏作为输入,我可以形成一个文件名以用于其中的语句吗?例如,目前我可能有:-D#include

#include "data/1024_cadr.h"

...但我想通过在调用编译器期间使用 来形成这个包含字符串。然后,我会在驱动编译器并运行一些测试的脚本中使用它。我宁愿不显式包含所有文件名,因为脚本在其他地方使用数值(此处为 1024)。-DSIZE=1024

我尝试了以下(和其他想法),但没有运气:

#define str(x) #x
#include "data/"##str(SIZE)##"_cadr.h"
C++ 宏包括

评论

1赞 Eljay 10/29/2023
#include MAKE_CADR(SIZE)其中 和 和#define MAKE_CADR(x) MAKE_CADR2(x)#define MAKE_CADR2(x) MAKE_CADR3(data/x##_cadr.h)#define MAKE_CADR3(x) #x

答:

0赞 user2023370 10/29/2023 #1

正如@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)