[英]C using a forward declaration within a function definition
我正在開發一個項目,我不得不使用一些以前編寫的代碼,它使用許多頭文件來調用其他頭文件。 我試圖保持我的應用程序分離,但我仍然需要使用前面代碼中定義的許多類型和函數。
在引用其他頭文件中聲明的數據類型時,我在自己的頭文件中添加了前向聲明。 我現在的問題是,我正在嘗試從源文件中的函數定義中引用聯合類型,我不太清楚如何做到這一點。
舊頭文件:
/* filename: include.h */
typedef union SOME_UNION_TYPE
{
int a;
.
.
}SOME_UNION_TYPE;
我的源文件:
/* filename: file.c */
void func()
{
SOME_UNION_TYPE A;
.
.
return;
}
我知道在我的源代碼中包含“include.h”會更容易,但我盡量避免使用它。 到目前為止,我的嘗試一直是在我的頭文件中聲明union,希望將typedef名稱暴露給編譯器。
我的頭文件:
/* filename: file.h */
union SOME_UNION_TYPE;
但是,當我編譯時,我收到一個錯誤,抱怨func()中A的未知大小。
在此先感謝您的幫助。
#include
指令不是要避免的。 如果您擔心其他人的代碼會污染您的代碼,您可以制作一個包含所需標題的標題,並直接包含該標題。
復制代碼很糟糕。
如果您需要創建該類型的實際實例,則需要完整的聲明,而不僅僅是名稱。
在這種情況下,正確的做法是咬住子彈並包含定義類型的頭文件。
其他代碼可能包含一堆其他標題,因為它需要它們! 你應該只包括另一個標題,否則你復制的代碼是壞的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.