我想用C创建一个结构,初始值如下:
typedef struct {
int id = 0;
char *name = "none";
} employee;
Run Code Online (Sandbox Code Playgroud)
我知道以上是不可能的,有没有其他方法可以做到这一点?
MOH*_*MED 44
你不能这样做
请改用以下内容
typedef struct
{
int id;
char* name;
}employee;
employee emp = {
.id = 0,
.name = "none"
};
Run Code Online (Sandbox Code Playgroud)
您可以使用宏来定义和初始化实例.每次要定义新实例并初始化它时,这将使您更容易.
typedef struct
{
int id;
char* name;
}employee;
#define INIT_EMPLOYEE(X) employee X = {.id = 0, .name ="none"}
Run Code Online (Sandbox Code Playgroud)
在您的代码中,当您需要使用员工类型定义新实例时,您只需将此宏称为:
INIT_EMPLOYEE(emp);
Run Code Online (Sandbox Code Playgroud)
Don*_*nie 13
你可以做:
struct employee_s {
int id;
char* name;
} employee_default = {0, "none"};
typedef struct employee_s employee;
Run Code Online (Sandbox Code Playgroud)
然后,您只需记住在声明新的员工变量时执行默认初始化:
employee foo = employee_default;
Run Code Online (Sandbox Code Playgroud)
或者,您可以始终通过工厂函数构建员工结构.
如果您正在使用,gcc您可以提供designated initializers对象创建.
typedef struct
{
int id=0;
char* name="none";
}employee;
employee e =
{
.id = 0;
.name = "none";
};
Run Code Online (Sandbox Code Playgroud)
或者,只需使用类似数组初始化.
employee e = {0 , "none"};
| 归档时间: |
|
| 查看次数: |
90267 次 |
| 最近记录: |