條件編譯的行為類似於c語言中的if…else…
條件編譯時預編譯指示命令,用於控制是否編譯某段**
示例**:條件編譯初探
// #include
#define c 1
int main()
輸出結果很明顯,當我們巨集定義常量為1時才會編譯s = 「this is first printf…\n」 ;this is first printf…
使用預編譯指令可以得知:
1. 預編譯器根據條件編譯指令有選擇的刪除**
2. 條件編譯指令在預編譯期進行分支判斷
可以通過命令列定義巨集
gcc -dmacro=vlaue file.c 或
gcc -dmacro file.c
如上述**:可以使用gcc -dc=1 test.c(但是前提是沒有這個巨集定義或者只能等於紅一定的常量)
#include的本質是將已經存在的檔案內容嵌入到當前檔案中
#include的間接包含同樣會產生嵌入檔案內容的操作
問題:間接包含同乙個標頭檔案是否會產生編譯錯誤?答案是肯定會的,在同乙個檔案中展開標頭檔案的內容,會導致多個全域性變數重名,發生編譯錯誤。
條件編譯可以解決標頭檔案重複包含的編譯錯誤(加入以下**即可解決)
使用了#ifndef…#endif語句。意思是當沒有定義test_h這個檔案時才執行下面**。// global.h
#ifndef _global_h_
#define _global_h_
int global = 10 ;
#endif
// test.h
#ifndef _test_h_
#define _test_h_
#include "global.h"
const
char *name = "test.h" ;
char * hello_world ()
#endif
條件編譯使得我們可以按不同的條件編譯不同的**段,因而可以產生不同的目標**。
利用這個特性,在實際工程中條件編譯主要用於以下兩種情況
不同的產品線共用乙份**(乙個產品高低端區別)
區分編譯產品的除錯版和發布版
預編譯處理
1.編譯過程的簡介 預編譯 a.處理所有的注釋,以空格代替。b.將所有 define刪除,並展開所有的巨集定義,字串替換。c.處理條件編譯指令 if,ifdef,elif,else,endif d.處理 include,並展開被包含的檔案,把頭檔案中的宣告,全部拷貝到檔案中。e.保留編譯器需要使用的...
C C 預編譯指令和條件編譯
1.常見的預編譯指令和條件編譯項有如下這些 define undef ifdef ifndef if elif else endif 1 define 定義乙個預處理巨集 2 undef 取消巨集的定義 3 if 編譯預處理中的條件命令,相當於c語法中的if語句 4 ifdef 判斷某個巨集是否被定...
stdafx h預編譯處理
stdafx.h中沒有函式庫,只是定義了一些環境引數,使得編譯出來的程式能在32位的作業系統環境下執行。windows和mfc的include檔案都非常大,即使有乙個快速的處理程式,編譯程式也要花費相當長的時間來完成工作。由於每個.cpp檔案都包含相同的include檔案,為每個.cpp檔案都重複處...