
本帖最后由 fury-roar 于 2016-12-31 15:04 编辑 在定义若干结构体时,可能会出现以下情况,即结构体之间相互包含: typedef void (*pwmcallback_t)(PWMDriver *pwmp, void *arg); typedef struct { uint32_t frequency; pwmcnt_t period; pwmcallback_t callback; } PWMConfig; typedef struct { pwmstate_t state; const PWMConfig *config; pwmcnt_t period; } PWMDriver; 如果按照上述顺序定义结构体的话,编译出现错误。 现使用下面正确的方法: typedef struct PWMDriver PWMDriver; typedef void (*pwmcallback_t)(PWMDriver *pwmp, void *arg); typedef struct { uint32_t frequency; pwmcnt_t period; pwmcallback_t callback; } PWMConfig; struct PWMDriver { pwmstate_t state; const PWMConfig *config; pwmcnt_t period; } ; |
笔误,正确的是
typedef struct {
uint32_t frequency;
pwmcnt_t period;
pwmcallback_t callback;
}PWMConfig;
sorry,写错了。
应该是
typedef struct {
uint32_t frequency;
pwmcnt_t period;
pwmcallback_t callback;
}PWMConfig;
你下面的结构体连个名字也没有啊!闹什么啊
typedef struct {
uint32_t frequency;
pwmcnt_t period;
pwmcallback_t callback;
};
这个明显存在语法错误啊!
那也没有“相互包含”啊?!
只是一个结构体的成员是另一个结构体的对象。
如果存在了“相互包含”,那么说明你在构建结构体时数据封装是有问题的。
不可能有如下情形:
鸟类包含喜鹊,而喜鹊又包含鸟类。