條件編譯指令將決定那些**被編譯,而哪些是不被編譯的。可以根據表示式的值或者某個特定的巨集是否被定義來確定編譯條件。
一.#if、#else、#elif和#endif指令
(1) #if 表示式
語句段1
[#else
語句段2]
#endif
**例項:
#include
#include
#if val_min < int_min || int_max < val_max
#error value out of range //表示輸出一行錯誤提示
#endif
如果表示式為真,就編譯語句段1,否則編譯語句段2
(2) #if 表示式1
語句段1
#elif 表示式2
語句段2
#else
語句段3
#endif
例項**:
#include
#include
#if val_min < int_min || int_max < val_max
typedef long val_t; //型別重定義
#else
typedef int val_t;
#endif
如果表示式1真,則編譯語句段1,否則判斷表示式2;如果表示式2為真,則編譯語句段2,否則編譯語句段3
二. #ifdef和#ifndef
(1)#ifdef的一般形式:
#ifdef 巨集名
語句段
#endif
作用:如果在此之前已定義了這樣的巨集名,則編譯語句段。 (2)#ifndef的一般形式:
#ifndef 巨集名
語句段
#endif
作用:如果在此之前沒有定義這樣的巨集名,則編譯語句段。
#else可以用於#ifdef和#ifndef中,但#elif不可以。
三. #error 指令將使編譯器顯示一條錯誤資訊,然後停止編譯。
四. #line 指令可以改變編譯器用來指出警告和錯誤資訊的檔案號和行號。
五. #pragma 指令沒有正式的定義。編譯器可以自定義其用途。典型的用法是禁止或允許某些煩人的警告資訊。
C語言的條件編譯
預處理程式提供了條件編譯的功能。可以按不同的條件去編譯不同的程式部分,因而產生不同的目標 檔案。這對於程式的移植和除錯是很有用的。條件編譯有三種形式,下面分別介紹 1.第一種形式 ifdef 識別符號 程式段1 else 程式段2 endif 它的功能是,如果識別符號已被 define命令定義過則對...
C語言的條件編譯
有些程式在除錯 相容性 平台移植等情況下可能想要通過簡單地設定一些引數就生成乙個不同的軟體,這當然可以通過變數設定,把所有可能用到的 都寫進去,在初始化時配置,但在不同的情況下可能只用到一部分 就沒必要把所有的 都寫進去,就可以用條件編譯,通過預編譯指令設定編譯條件,在不同的需要時編譯不同的 一 條...
C語言中的條件編譯
條件編譯的功能使得我們可以按不同的條件去編譯不同的程式部分,因而產生不同的目 標 檔案。這對於程式的移植和除錯是很有用的。條件編譯有三種形式,下面分別介紹 第一種形式 ifdef 識別符號 程式段 1 else 程式段 2 endif 它的功能是,如果識別符號已被 define 命令定義過則對程式段...