C语言结构体类型声明与定义分离:
问题描述:
假设代码A处用到一个结构体S,但S的定义依赖于A处后续的其它类型,因此S不能简单地放到A处之前定义(比较麻烦,也不是不可,用我现在说的方法就可以)
解决方法:
结构体的真实定义放在后边不动它,前边使用到的地方只在其之前进行类型定义即可(typedef struct SignalAnalyser SignalAnalyser;),类似函数的声明。
常用于解决类似这种警告:
warning: ‘struct SignalAnalyser’ declared inside parameter list will not be visible outside of this definition or declaration
void (*onMatchFrequency)(struct RecognitionListener *_this, struct SignalAnalyser *_analyser, struct EventInfo *_event,
再比如说可以把结构体定义放到.c文件内部,.h头文件中只进行类型声明,这样不把真实元素暴露出去。
还有其余的用处就不多说了,有经验的前辈应该比我更了解。
附图: