Элемент инициализатора не является постоянным - как решить ошибки?

По этой ссылке

Я сделал:

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')

нашел это решение, но не понял, как его решить...

РЕДАКТИРОВАТЬ: строка вызвала ошибку:

.attrs = attrs1,

1 ответ

Решение

Да другое struct объект или содержимое другой переменной никогда не будет считаться константным выражением, которое можно использовать в инициализаторе для static объект.

Но ваша первая инициализация также является фиктивной. Возможно, вы имели в виду

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

Таким образом, ваша инициализация второго будет читать что-то вроде

static const struct attribute_group attr_group = {
       .attrs = &foo_attribute.attr,
};
Другие вопросы по тегам