如何在C++中编译时读取文件?

如何在C++中编译时读取文件?,c++,compilation,include,file-handling,preprocessor-directive,C++,Compilation,Include,File Handling,Preprocessor Directive,我一直在寻找一种在编译时将文件存储为const char*的方法 我试着这样做: #define STRINGIFY(...) #__VA_ARGS__ // va args deals with commas #define INCLUDE(path) #include path // error: '#' is not followed by a macro parameter constexpr const char* source = STRINGIFY(INCLUDE("source

我一直在寻找一种在编译时将文件存储为const char*的方法

我试着这样做:

#define STRINGIFY(...) #__VA_ARGS__ // va args deals with commas
#define INCLUDE(path) #include path // error: '#' is not followed by a macro parameter

constexpr const char* source = STRINGIFY(INCLUDE("source.txt"));

但不幸的是,您不能将include指令放在宏扩展中。有办法解决这个问题吗?或者在编译时获取文件内容的任何其他方法?

实现这一点的经典方法是编写一个awk或perl脚本,读取数据文件并生成一个.H文件

特别是,您似乎正在查找此文件。谢谢,唯一的问题是,如果我想动态更改文件,我必须再次运行脚本。因此,您将其设置为构建依赖关系。对于这种情况,您建议perl和awk之间使用哪一种?嗯,可能是perl,我想python可能不适合这种情况?