Вы не можете инициализировать ни одного члена в объявлении структуры.Вы должны инициализировать структуру при создании экземпляра структуры.
struct my_struct
{
char* str;
};
int main(int argc,char *argv[])
{
struct my_struct foo = {"string literal"};
...
}
Поскольку вы хотите, чтобы элемент str
ссылался на строковый литерал, вам лучше сделать его const char *str
,поскольку вы не можете каким-либо образом изменять строковые литералы.
В качестве альтернативы
Предоставьте функцию инициализации
, чтобы каждый раз инициализировать вашу структуру в известное состояние.
struct my_struct
{
const char* str;
int bar;
};
void init_my_struct(strut my_struct *s)
{
s->str = "string literal";
s->bar = 0;
}
int main(int argc,char *argv[])
{
struct my_struct foo;
init_my_struct(&foo);
Или инициализировать его с помощью препроцессора:
struct my_struct
{
const char* str;
int bar;
};
#define MY_STRUCT_INITIALIZER {"string literal",0}
int main(int argc,char *argv[])
{
struct my_struct foo = MY_STRUCT_INITALIZER;
Или скопировать из известного объекта:
struct my_struct
{
const char* str;
int bar;
};
const struct my_struct my_struct_init = {"string_literal",0};
int main(int argc,char *argv[])
{
struct my_struct foo = my_struct_init;