無非就是標頭檔案裡有一行
int a=1;
包含兩次就變成了
int a=1;
int a=1;
於是變數重複定義,報錯
類,函式同理
而當你寫成
#ifndef *** #define ***
int a=1;
#endif
包含兩次就是
#ifndef *** #define ***
int a=1;
#endif
#ifndef *** #define ***
int a=1;
#endif
第一次中,由於沒有定義***,所以做了兩件事,定義***,然後int a;
第二次中,由於已經定義***,所以啥都不做
pragma once是上述方式的簡寫,好處是再也不會有兩個標頭檔案因為使用了同樣的***而被忽略了你用過的套套肯定不會翻過來再用一遍
C C中防止標頭檔案被重複包含的方法
原部落格鏈結 為了避免同乙個檔案被include多次,c c 中有兩種方式,一種是 ifndef方式,一種是 pragma once方式。在能夠支援這兩種方式的編譯器上,二者並沒有太大的區別,但是兩者仍然還是有一些細微的區別。方式一 ifndef somefile h 或寫為 if define s...
防止標頭檔案的重複包含
防止標頭檔案重複包含的巨集想必大家都清楚,ifndef define endif就是幹這個用的,面試中也考過。我也是知道這個巨集的作用,今天我們就來實戰測試一下,網上說的那是別人的東西,只有自己測試過出結果的才是自己的東西。localhost test ls a.h test.c test.h lo...
重複包含標頭檔案的問題
在每個標頭檔案的最前端和最後端加以下 ifndef x 其中 x為唯一的標誌符 define x.endif 條件編譯,解決的是標頭檔案重複包含的問題 比如 a.h b.h 這個b.h是包含a.h的 include a.h include b.h 如果預處理階段,寫成這樣,實際上a.h就會插入兩次了...