簡體   English   中英

C - 變量具有不完整的類型“struct ...”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM