簡體   English   中英

包含頭文件會導致類型沖突

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

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