1.預編譯階段,把所有#include 」.h「 用.h的內容來替換了, 所以之後就沒有.h了所有.h的內容都已經包含進了需要它們的.cpp中
2.生成最後的exe檔案是由編譯、鏈結兩步完成的, 編譯是源**生成obj二進位制目標檔案的過程, 注意乙個源**檔案生成乙個obj檔案,例如a.cpp中可以有乙個void fun(); b.cpp中可同時有乙個void fun();
3.編譯期間, 我們只要宣告了的東西就能使用, 而無需它的定義, 宣告可以重複, extern在編譯時是告訴該編譯單元該變數的定義在別的編譯單元裡, 相當於宣告, 鏈結時, 定義在整個程式中有且僅有乙份。
4.#ifndef _a_h
#define _a_h
#endif
預編譯階段, 當第一次執行該段**(即#include 「a.h」,參見第一條)時, 由於我們並沒有巨集定義a_h_, 所以會執行#define a_h_以及void fun()兩條語句, 第二次執行該段**時因為#ifndef a_h_為假就直接走到#endif後面也就等於該次#include 「a.h」什麼也沒做了
防止標頭檔案重複包含
在程式設計中,經常會遇到這種情況,我們的某乙個程式會呼叫多個dll,因此需要包含多個標頭檔案,不同的標頭檔案可能包含了相同某乙個下一級標頭檔案,這就可能會導致標頭檔案的重複包含,從而導致變數 函式的重定義等等,為了解決這個問題,就要求我們在編寫dll的時候,使用 ifndef define endi...
防止標頭檔案重複包含方法
編譯器支援 標準未定義 由編譯器保證不會重複包含物理上的同乙個檔案 ifndef test.h define test.h code endif 條件編譯是標準支援的 因為標準支援 define定義的識別符號 不會重複引入同名的檔案 存在不小心寫錯define識別符號導致重複引入的問題 所以有些c標...
防止標頭檔案的重複包含
防止標頭檔案重複包含的巨集想必大家都清楚,ifndef define endif就是幹這個用的,面試中也考過。我也是知道這個巨集的作用,今天我們就來實戰測試一下,網上說的那是別人的東西,只有自己測試過出結果的才是自己的東西。localhost test ls a.h test.c test.h lo...