[英]Including header file causes conflicting types
所以我將這個結構保存在一個名為h1.h的頭文件中
typedef struct{
int a;
int b;
special_t test;
} randomDataType
因此,我包括了包含special_t聲明的頭文件。 兩個頭文件中的函數都沒有被命名為相同的函數,而且我看不到循環依賴會如何發揮作用,因為僅通過h1.h中聲明的函數才能訪問第二個頭文件中聲明的函數。
但是對於其他標頭中的所有內容,我都有“ _ _的先前聲明”錯誤。 為什么是這樣?
聽起來您的頭文件上沒有多個包含保護。 除了極少數情況下您會知道它們時,C頭文件應這樣寫:
/* This is h1.h.
This is its license.
This is what you will find here. */
#ifndef H1_H__
#define H1_H__
all declarations go here
#endif /* h1.h */
除了注釋,在#ifndef
... #endif
塊之外不應有任何其他內容,並且您需要選擇宏名稱,以使其與任何其他頭文件都不會沖突-假定所有 C頭文件都在其中包含此構造他們或類似的東西。
它的作用是讓您可以#include "h1.h"
多次#include "h1.h"
; 編譯器將只處理其內容一次。 許多編譯器都認可這種構造,甚至不會再次打開文件(只要仍然定義了宏)。 因此,您可以安全地包含其他標頭(可能只需要幾個聲明)中的標頭,而不必擔心其他文件已完成的工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.