關於C 中的標頭檔案互相包含

2021-06-28 11:31:25 字數 941 閱讀 1538

在c++中一般的程式都會分成標頭檔案和cpp檔案,然後包含不同的標頭檔案可以獲得標頭檔案中的函式的引用,

但是這裡就會出現乙個問題就是如果兩個檔案中同時包含了同乙個標頭檔案,例如  a.h中包含了c.h 然後在b.h中

也包含c.h 那麼就會出現上述所提到的重複包含的情況。

所以在這裡可以使用乙個    # ifndef __a_h_   #define __a_h_   #endif

如下所示

// a.h

#ifndef _a_h_

#define _a_h_

class a

;#endif

// b.h

#ifndef _b_h_

#define _b_h_

class a;

class b

void funb2();

};#endif

但是我之前在寫程式的時候遇到了這樣的一種情況a包含了b的標頭檔案b也還要包含a的標頭檔案這樣的情況,那麼這樣的話

對於編譯器來說它需要把這兩個標頭檔案編譯了這就是個問題了,那麼如何解決這個問題呢也是通過乙個預定義#pramgma once這樣就能解決

但是注意的是在類定義之前需要加上對類的宣告,比如下面在 class a 之前需要有個 class b

#pragma once

#include "b.h"

class b;

class a

;//檔案b.h中的**

#pragma once

#include "a.h"

class a;

class b

;

所以一般的c++程式的規範是要求把頭檔案盡量寫在cpp檔案中這樣可以避免上述的標頭檔案相互包含的問題。

標頭檔案互相包含問題

當我們有兩個類的標頭檔案互相包含時,如果出現乙個類中有另乙個類的物件時,vs就會報這樣的錯error c4430 缺少型別說明符 假定為 int。test2.h ifndef test2 h define test2 h include include test1.h using namespace...

標頭檔案互相包含解決 關於多檔案中的重複定義標頭檔案

先上錯誤 標頭檔案 fenshu.h pragma once include include using namespace std class fenshu private int a,b public fenshu int x,int y a x b y void display void yf...

C 中兩個類的標頭檔案互相包含問題

我們知道,當乙個類 設類a 中包含另乙個類 設類b 的物件時,必須在該檔案中包含另乙個類的標頭檔案,如果兩個類都互用到了對方的物件,理論上就要互相包含標頭檔案,但是這樣是不可取的。貼出 如下 檔案a.h中的 02.pragma once 03.include b.h 04.class a 05.09...