C中的结构初始化
struct initialization in C
在您将其标记为 duplicate/downvote 之前,我已经阅读了一些书籍,并在互联网上花费了大量时间对此进行研究,但我找不到答案。
我想在创建结构时对其进行初始化。但我也想使用 typedef
将其声明为类型
这是我正在尝试做的事情
typedef struct Clock_TAG Clock;
struct Clock_TAG{
int time;
}Clock = {
0
};
它给我一个错误 "redefinition of 'Clock' as different kind of symbol"
typedef struct Clock_TAG{
int time;
}Clock = {
0
};
给予"illegal initializer (only variables can be initialized)"
我知道我必须使用结构的名称来初始化它,我想在创建它时对其进行初始化,所以请不要建议使用 init() 方法。
这是一个示例代码,我想具体了解如何在 .h 文件中进行 typedef 和结构初始化
我知道有很多方法可以解决这个问题,我可以省略使用 typedef 或以其他方式初始化结构成员,但我想了解为什么这会给我一个错误以及如何修复它。
P.S
malloc .h 文件中的结构是否也合法?
A typedef
是一个别名,当声明:
typedef struct Clock_TAG Clock;
并在 typedef 之后声明:
struct Clock_TAG{
int time;
} Clock = {0};
^^^^^
您正在尝试初始化一个 struct
名称。您的意思可能是:
typedef struct Clock_TAG Clock;
struct Clock_TAG{
int time;
} clock = {0};
在您将其标记为 duplicate/downvote 之前,我已经阅读了一些书籍,并在互联网上花费了大量时间对此进行研究,但我找不到答案。
我想在创建结构时对其进行初始化。但我也想使用 typedef
将其声明为类型这是我正在尝试做的事情
typedef struct Clock_TAG Clock;
struct Clock_TAG{
int time;
}Clock = {
0
};
它给我一个错误 "redefinition of 'Clock' as different kind of symbol"
typedef struct Clock_TAG{
int time;
}Clock = {
0
};
给予"illegal initializer (only variables can be initialized)"
我知道我必须使用结构的名称来初始化它,我想在创建它时对其进行初始化,所以请不要建议使用 init() 方法。
这是一个示例代码,我想具体了解如何在 .h 文件中进行 typedef 和结构初始化 我知道有很多方法可以解决这个问题,我可以省略使用 typedef 或以其他方式初始化结构成员,但我想了解为什么这会给我一个错误以及如何修复它。
P.S malloc .h 文件中的结构是否也合法?
A typedef
是一个别名,当声明:
typedef struct Clock_TAG Clock;
并在 typedef 之后声明:
struct Clock_TAG{
int time;
} Clock = {0};
^^^^^
您正在尝试初始化一个 struct
名称。您的意思可能是:
typedef struct Clock_TAG Clock;
struct Clock_TAG{
int time;
} clock = {0};