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

How to read a file at compile time in C++?

我一直在寻找一种在编译时将文件存储为 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 指令放在宏扩展中。有什么办法可以解决这个问题吗?或任何其他在编译时获取文件内容的方法?

执行此操作的经典方法是编写读取数据文件并生成 .H 文件的 awk 或 perl 脚本