12
.
6
为什么声明 extern int f(struct x *p); 报出了一个奇怪的警告信息 ``结构 x 在参数列表中声明"?
与 C 语言通常的作用范围规则大相径庭的是, 在原型中第一次声明 (甚至提到) 的结构不能和同一源文件中的其它结构兼容, 它在原型的结束出就超出了作用范围。
要解决这个问题, 在同一源文件的原型之前放上这样的声明:
struct x;
它在文件范围内提供了一个不完整的结构 x 的声明, 这样, 后续的用到结构 x 的声明至少能够确定它们引用的是同一个结构 x。
参考资料: [
ISO
, Sec. 6.1.2.1, Sec. 6.1.2.6, Sec. 6.5.2.3]。
翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)