C 的條件編譯

2021-06-30 16:28:16 字數 1058 閱讀 8847

一般情況下面c++的.h檔案和.cpp檔案裡面的每一行**都是要經過編譯的,但是通過條件編譯的方法可以讓某些語句不編譯, 條件編譯常見的語句形式是:

#ifdef 標示符

**段1

#else

**段2

#endif

**的意義也很好懂,就是如果標示符已經被定義了就執行**段1,否則執行**段2

條件編譯也是c或者c++裡面乙個實用的技巧,這讓我們可以通過簡單的方式控制哪些語句被編譯哪些不被編譯

下面是兩個栗子:

1. 在乙個需要寫.h的c++工程中,有可能出現這個.h檔案被引用了兩次的情況,為了避免重複編譯,需要在.h前面加上宣告:

#ifndef blabla

#define blabla

/*你的**

*/#endif

2. 考慮下面一段**:

#include using namespace std;

#define debug

int main()

#define debug的意思就是定義debug這個標示符,那麼顯然"debug mode"這個字串應該被輸出。如果說我把這句話注釋掉那麼就不會輸出了。

這個技巧的實用性主要體現在比較大的工程,我需要列印除錯資訊或者輸入量太大,我需要在除錯**的時候減少輸入量以提高除錯效率(就是我目前遇到的情況),那麼我可以把這些**寫在條件編譯的**段裡面,如果我不需要看這些除錯資訊或者我需要完整的輸入來跑實驗,那麼我只要修改一下標示符的定義就好,不用一行一行的去改**。

4月11日更新:

其實條件判斷的地方不用一定要寫#ifdef, 寫成(#if 條件判斷語句) 的形式也是可以的,如下:

#include using namespace std;

int main()

如果#if後面的條件成立(比如#if 1), 那麼就會把相應**段編譯進去,和普通的if else語句還是很相似的

C的條件編譯

有時候我們希望程式有多種配置,我們在源 編寫時寫好了各種配置的 然後給個配置開關,在源 級別去修改配置開關來讓程式編譯出不同的效果。條件編譯中用的兩種條件判定方法分別是 ifdef 和 if區別 ifdef 判定條件成立與否時主要是看 這個符號在本語句之前有沒有被定義,只要定義了 我們可以直接 de...

C 條件編譯

條件編譯 按照不同的編譯條件去編譯不同的程式 從而使乙個源程式在不同的編譯條件下生成不同的目標程式。c 提供幾種條件編譯指令,以乙個表示式或者某個巨集是否被定義的條件作為編譯條件。指令 用途 空指令,無任何效果 include 包含乙個源 檔案 define 定義巨集 undef 取消已定義的巨集 ...

C 條件編譯

一 條件編譯方法 1 if,elif,else,endif 使用條件編譯指令,如果滿足 if後面的條件,就編譯 if和 endif之間的程式段,否則不編譯。二 編譯此段 時是否有某個巨集通過 ifdef,else,endif或 ifndef,else,endif 如果乙個c源程式在不同計算機系統上執...