结构变量初始化简写

Structure variable initialization in short way

正在尝试以短方式用值初始化结构变量字段:

typedef struct
{
    int id = 0;
    char* name = "none";
}employee;

employee e = 
{
    .id = 0 ;
    .name = "none" ;
};

e 初始化时出错:

Error    expected ‘}’ before ‘;’ token                                                  
Note     to match this ‘{’                                                              
Error    could not convert ‘{0}’ from ‘<brace-enclosed initializer list>’ to ‘employee’ 

为什么我会收到错误信息以及如何解决这个问题?

在 C 中,您不能在结构定义中初始化数据成员。所以你必须写

typedef struct
{
    int id;
    char* name;
}employee;

另外列表初始化中的分隔符是逗号。

employee e = 
{
    .id = 0,
    .name = "none",
};

employee e = 
{
    .id = 0,
    .name = "none"
};