[英]C - Variable has incomplete type “struct …”
我有一個container.h
文件和一個container.c
文件。
在container.h
文件中,我編寫了以下內容:
typedef struct Container Container;
以及container.c
文件中的以下內容:
#include "container.h"
typedef struct Container
{
size_t item_count;
} Container;
但是,我不斷收到variable has incomplete type "struct Container"
錯誤。 這與將extern
與 struct 一起使用有關嗎?
編輯:我已將以下內容編譯為庫並將#include
-d 編譯到另一個main.c
文件中,我在其中編寫了以下內容:
#include "library.h"
int main()
{
Container ctnr = { 0 };
return 0;
}
這意味着唯一知道結構定義的翻譯單元是帶有文件container.c
的翻譯單元。
如果任何其他翻譯單元需要知道結構定義,那么編譯器將發出錯誤,因為結構定義不可用。 您需要將結構定義放在 header 中。
也就是function主要的翻譯單元
#include "library.h"
int main()
{
Container ctnr = { 0 };
return 0;
}
需要知道為 object ctnr
分配 memory 的結構定義。 但結構定義不可用。 所以編譯器至少不知道要分配多少 memory。 也沒有必要使用兩個具有相同名稱的 typedef(s)。 typedef(s) 之一是多余的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.