這是
巨集定義的一種,它可以根據是否已經定義了乙個
變數來進行分支選擇,一般用於除錯等等.實際上確切的說這應該是預處理功能中三種(巨集定義,檔案包含和
條件編譯)中的一種----條件編譯。 c語言在對程式進行編譯時,會先根據
預處理命令進行「預處理」。c語言
編譯系統包括預處理,編譯和鏈結等部分。
#ifndef x//先測試x是否被巨集定義過
#define x
程式段 1 //如果x沒有被巨集定義過,定義x,並
編譯程式段 1
#endif
程式段 2 //如果x已經定義過了則編譯程式段2的語句,「忽視」程式段 1。
條件指示符#ifndef 的最主要目的是防止
標頭檔案的重複包含和編譯。了解:
條件編譯當然也可以用條件語句來實現。 但是用條件語句將會對整個
源程式進行編譯,生成的
目標**程式很長,而採用
條件編譯,則根據條件只編譯其中的
程式段1或程式段2,生成的
目標程式較短。如果條件選擇的
程式段很長,採用
條件編譯的方法是十分必要的。
防止標頭檔案重複包含
在程式設計中,經常會遇到這種情況,我們的某乙個程式會呼叫多個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...