在程式設計中,經常會遇到這種情況,我們的某乙個程式會呼叫多個dll,因此需要包含多個標頭檔案,不同的標頭檔案可能包含了相同某乙個下一級標頭檔案,這就可能會導致標頭檔案的重複包含,從而導致變數/函式的重定義等等,為了解決這個問題,就要求我們在編寫dll的時候,使用#ifndef … #define …#endif來保證標頭檔案的唯一性。
具體做法為:
(1)標頭檔案的時候,在標頭檔案的最前面寫上一些兩行,意思是如果沒有定義這個標頭檔案,我們就進行定義。
#ifndef base_model_h(2)在(1)完成後,開始定義你的標頭檔案內容,例如#include了、引用dll了,變數定義了等等。#define base_model_h
其中base_model_h一般為你的標頭檔案的名字,也就是說,如果你編寫的頭檔名稱為my_head_declare.h,則這兩行應該為
#ifndef my_head_declare_h
#define my_head_declare
(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...