初始化元素不是常数 - 如何解决错误?

时间:2012-08-26 14:18:45

标签: c linux-kernel

遵循此link

我做了:

static const struct attribute const *attrs1= {
        &foo_attribute.attr,
        NULL,
};
 static const struct attribute_group const attr_group = {
       .attrs = attrs1,
};

但是得到这些错误:

error: initializer element is not constant
error: (near initialization for 'attr_group.attrs')

找到this解决方案,但不明白如何解决它......

修改 该行触发了错误:

.attrs = attrs1,

1 个答案:

答案 0 :(得分:2)

是的,另一个struct对象或另一个变量的内容永远不会被视为可以在static对象的初始值设定项中使用的常量表达式。

但是你的第一次初始化也是假的。可能你的意思是

static const struct attribute * const attrs1= &foo_attribute.attr;

因此,您对第二个的初始化将读取类似

的内容
static const struct attribute_group attr_group = {
       .attrs = &foo_attribute.attr,
};