防止標頭檔案的重複包含

2021-08-03 21:58:08 字數 755 閱讀 3876

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

[***@localhost test]$ ls

a.h test.c test.h

[***@localhost test]$ cat a.h

#ifndef a_h

#define a_h

int a=1;

#endif

[***@localhost test]$ cat test.h

#ifndef test_h

#define test_h

#include"a.h"

void func(int a);

#endif

[***@localhost test]$ cat test.c

#include#include"test.h"

#include"a.h"

int main()

void func(int a)

[***@localhost test]$

#ifndef#define#endif是被用在.h檔案中不是.c檔案中。test.h包含了a.h ,test.c同時包含了test.h和a.h,那test.c包含了2個a.h,即被重複包含了,這時候就要加上巨集。最好2個頭檔案都要加,正常來說每個標頭檔案都要加上這個巨集防止被重複包含。

防止標頭檔案重複包含

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

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

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

C 防止標頭檔案重複包含

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