0

我想在 C++ 中执行以下操作:

static const char* data[] = { #include "mydata.hh" };

其中 mydata.hh 的内容应该作为 char 数组分配给数据。我已经通过#x 尝试了#include 的各种变体和(一级和二级)字符串化。到目前为止都没有工作。这实际上是可能的还是我错过了什么?

提前谢谢。

4

4 回答 4

8

你可以:

static const char* data[] = {  // <--- new line 
#include "mydata.hh" 
};   // <--- don't forget semi-colon

但为什么?

这一切都假设mydata.hh包含与声明兼容的内容:

//mydata.hh
"bla", "goo", "foo"
于 2012-04-20T21:21:42.230 回答
0

预处理器仅适用于以可选空格开头的语句,#因此您需要将 #include 放在单独的行上。

例子:

static const char* data[] = {
#include "mydata.hh"
};
于 2012-04-20T21:23:40.253 回答
0

在 include 指令周围换行。您所有的字符都必须在“标题”内用逗号分隔。然后您的代码将被成功编译。尽管我确信这种编程风格看起来很糟糕。

于 2012-04-20T21:26:26.790 回答
0

我认为重点是预处理器查找 # 代码然后执行指令,# 之间的点,您可以尝试将 #include "" 作为单独的行。考虑到,预处理只是一个文本解析器

static const char* data[] = { 
        #include "mydata.hh" 
}
于 2012-04-20T21:27:12.273 回答