【发布时间】:2015-10-30 23:12:43
【问题描述】:
在您将其标记为重复/否决之前,我已阅读书籍,在互联网上花费了大量时间研究此问题,但我找不到答案。
我想在创建结构时对其进行初始化。但我也想使用 typedef 将其声明为类型
这就是我想要做的事情
typedef struct Clock_TAG Clock;
struct Clock_TAG{
int time;
}Clock = {
0
};
它给了我一个错误“将'时钟'重新定义为不同类型的符号”
typedef struct Clock_TAG{
int time;
}Clock = {
0
};
给出“非法初始化器(只能初始化变量)”
我知道我必须使用结构的名称来初始化它,我想在它创建的时候初始化它,所以请不要建议使用 init() 方法。
这是一个示例代码,我想具体了解如何在 .h 文件中进行 typedef AND struct 初始化 我知道有很多方法可以解决这个问题,我可以省略使用 typedef 或以另一种方式初始化结构成员,但我想了解为什么这会给我一个错误以及如何修复它。
附言 在 .h 文件中 malloc 结构也合法吗?
【问题讨论】:
-
您没有仔细阅读或不了解 typedef 和
struct定义和变量定义的工作原理。编译器已经准确地告诉你出了什么问题。而且你永远不应该在标题中定义变量。 -
我确实仔细阅读过,是的,我缺乏理解,这就是我问的原因。好吧,在我之前关于 stackoverflow 的问题中,另一个人告诉我这是正确的方法。
-
@Olaf 你也介意解释一下原因吗?
-
这应该在你阅读的书中解释。如果没有,请阅读更好的。
标签: c struct initialization