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)