我想在 C++ 中执行以下操作:
static const char* data[] = { #include "mydata.hh" };
其中 mydata.hh 的内容应该作为 char 数组分配给数据。我已经通过#x 尝试了#include 的各种变体和(一级和二级)字符串化。到目前为止都没有工作。这实际上是可能的还是我错过了什么?
提前谢谢。
你可以:
static const char* data[] = { // <--- new line
#include "mydata.hh"
}; // <--- don't forget semi-colon
但为什么?
这一切都假设mydata.hh
包含与声明兼容的内容:
//mydata.hh
"bla", "goo", "foo"
预处理器仅适用于以可选空格开头的语句,#
因此您需要将 #include 放在单独的行上。
例子:
static const char* data[] = {
#include "mydata.hh"
};
在 include 指令周围换行。您所有的字符都必须在“标题”内用逗号分隔。然后您的代码将被成功编译。尽管我确信这种编程风格看起来很糟糕。
我认为重点是预处理器查找 # 代码然后执行指令,# 之间的点,您可以尝试将 #include "" 作为单独的行。考虑到,预处理只是一个文本解析器
static const char* data[] = {
#include "mydata.hh"
}