У меня есть эти 2 структур:Правильный способ инициализировать константный член динамически выделяемой структуры
struct Params {
int a;
int b;
};
struct Foo {
const struct Params settings;
int state;
};
settings
член сопз как намек на то, что он не должен быть изменен один раз в struct Foo
был создан и инициализирован.
И я хочу динамически выделять эту структуру, например.
struct Foo * new_foo(void)
{
struct Foo *n = malloc(sizeof *n);
if (n) {
n->settings.a = SETTING_A;
n->settings.b = SETTING_B;
...
}
return n;
}
Теперь это не будет скомпилировано из-за настроек, являющихся константой. Каков правильный способ для инициализировать такую структуру таким образом? Или лучше не объявлять член настроек как const?
Это не имеет смысла чтобы иметь 'const' копию структуры, имеет смысл иметь указатель' const' экземпляра структуры. –
должен 'if (a)' быть 'if (n)'? –
Объявление const в C просит компилятор не позволять вам назначать объект через этот псевдоним в области декларации. Это не означает, что объект является константой. – philipxy