防止標頭檔案重複包含

2021-06-28 08:52:01 字數 679 閱讀 5759

在程式設計中,經常會遇到這種情況,我們的某乙個程式會呼叫多個dll,因此需要包含多個標頭檔案,不同的標頭檔案可能包含了相同某乙個下一級標頭檔案,這就可能會導致標頭檔案的重複包含,從而導致變數/函式的重定義等等,為了解決這個問題,就要求我們在編寫dll的時候,使用#ifndef  …  #define …#endif來保證標頭檔案的唯一性。

具體做法為:

(1)標頭檔案的時候,在標頭檔案的最前面寫上一些兩行,意思是如果沒有定義這個標頭檔案,我們就進行定義。

#ifndef base_model_h

#define base_model_h

其中base_model_h一般為你的標頭檔案的名字,也就是說,如果你編寫的頭檔名稱為my_head_declare.h,則這兩行應該為

#ifndef my_head_declare_h

#define my_head_declare

(2)在(1)完成後,開始定義你的標頭檔案內容,例如#include了、引用dll了,變數定義了等等。

(3)在(1)(2)都完成之後,在標頭檔案的最後面加上#endif作為結尾。

整體結構為:

#ifndef 頭檔名稱

#define頭檔名稱

標頭檔案內容

#endif

防止標頭檔案重複包含方法

編譯器支援 標準未定義 由編譯器保證不會重複包含物理上的同乙個檔案 ifndef test.h define test.h code endif 條件編譯是標準支援的 因為標準支援 define定義的識別符號 不會重複引入同名的檔案 存在不小心寫錯define識別符號導致重複引入的問題 所以有些c標...

防止標頭檔案的重複包含

防止標頭檔案重複包含的巨集想必大家都清楚,ifndef define endif就是幹這個用的,面試中也考過。我也是知道這個巨集的作用,今天我們就來實戰測試一下,網上說的那是別人的東西,只有自己測試過出結果的才是自己的東西。localhost test ls a.h test.c test.h lo...

C 防止標頭檔案重複包含

1.預編譯階段,把所有 include h 用.h的內容來替換了,所以之後就沒有.h了所有.h的內容都已經包含進了需要它們的.cpp中 2.生成最後的exe檔案是由編譯 鏈結兩步完成的,編譯是源 生成obj二進位制目標檔案的過程,注意乙個源 檔案生成乙個obj檔案,例如a.cpp中可以有乙個void...