> 有些程序在調試、兼容性、平臺移植等情況下可能想要通過簡單地設置一些參數就生成一個不同的軟件,這當然可以通過變量設置,把所有可能用到的代碼都寫進去,在初始化時配置,但在不同的情況下可能只用到一部分代碼,就沒必要把所有的代碼都寫進去,就可以用條件編譯,通過預編譯指令設置編譯條件,在不同的需要時編譯不同的代碼。
(一)條件編譯方法
條件編譯是通過預編譯指令來實現的,主要方法有:
1、#if, #elif, #else, #endif
~~~
#if 條件 1
代碼段 1
#elif 條件 2
代碼段 2
...
#elif 條件 n
代碼段 n
#else
代碼段 n+1
#endif
~~~
2、#ifdef, #else, #endif或#ifndef, #else, #endif
> 條件編譯的另一種方法是用#ifdef與#ifndef命令,它們分別表示“如果有定義”及“如果無定義”。有定義是指在編譯此段代碼時是否有某個宏通過 #define 指令定義的宏,#ifndef指令指找不到通過#define定義的某宏,該宏可以是在當前文件此條指令的關面定義的,也可以是在其它文件中,但在此指令之前包含到該文件中的。
~~~
#ifdef的一般形式是:
#ifdef macro_name
代碼段 1
#else
代碼段 2
#endif
或
#ifdef的一般形式是:
#ifndef macro_name
代碼段 2
#else
代碼段 1
#endif
~~~
這兩段代碼的效果是完全一樣的。
3、通過宏函數defined(macro_name)
>參數為宏名(無需加""),如果該macro_name定義過則返回真,否則返回假,用該函數則可以寫比較復雜的條件編譯指令如
~~~
#if defined(macro1) || (!defined(macro2) && defined(macro3))
...
#else
...
#endif
~~~
- C語言模塊
- 基礎入門
- 各種變量類型
- 條件編譯
- 100例
- day1
- 1.c
- 2.c
- 3.c
- 4.c
- 5.c
- 6.c
- 7.c
- 8.c
- 9.c
- 10.c
- day2
- 1.c
- 2.c
- 3.c
- 4.c
- 5.c
- 6.c
- 7.c
- 8.c
- 9.c
- 10.c
- day3
- 1.c
- 2.c
- 3.c
- 4.c
- 5.c
- 6.c
- 7.c
- 8.c
- 9.c
- 10.c
- day4
- 1.c
- 2.c
- 3.c
- 4.c
- 5.c
- 6.c
- 7.c
- 8.c
- 9.c
- 10.c
- day5
- 1.c
- 2.c
- 3.c
- 4.c
- 5.c
- 6.c
- 7.c
- 8.c
- 9.c
- 10.c
- day6
- 1.c
- 2.c
- 3.c
- 4.c
- 5.c
- 6.c
- 7.c
- 8.c
- 9.c
- 10.c
- day7
- 1.c
- 2.c
- 3.c
- 4.c
- 5.c
- 6.c
- 7.c
- 8.c
- 9.c
- 10.c
- linux基礎知識
- 目錄
- 系統設置
- ftp管理
- ftp-auth
- 進程
- ssh登錄
- 權限屬性
- 用戶/用戶組
- 安裝命令
- 數據庫操作
- 虛擬機vmvare-tools安裝
- VI命令
- 上傳下載
- error
- 虛擬機mac