我正在为我正在链接的lib包含一个C头。
标头有一个结构foo
,我想要声明一个新变量bar
。
我收到编译器错误:
error: uninitialized const member in "struct foo"
这些成员需要初始化是有道理的,因为以后不能为它们分配值。但是使用这个库的C程序完全相同,它可以工作。 C和C ++标准有区别吗?
这只是一个样本。实际上我指的是来自mtd_dev_info
(mtd-utils)的结构libmtd.h
。 http://mtd-utils.sourcearchive.com/documentation/1.4.4/libmtd_8h_source.html
标题中的结构:
struct foo
{
int major;
int minor;
int type;
const char type_str[15];
const char name[15];
};
我的C ++应用程序:
int main (int argc, const char ** argv)
{
foo bar;
}
答案 0 :(得分:3)
您需要填写这些字段,因为它们是。
这意味着以后不会分配它们 - 而其他字段可以在程序的后续步骤中获得值(因为它们是可变的)。
C只是认为在这个编译单元中可以修改未定义值的const字段是可以的。