條件編譯 if

2021-07-31 04:48:51 字數 1076 閱讀 3160

1、為什麼需要條件編譯

客戶的需求在不停地發生變化,一會兒需要這個功能,一會兒不需要這個功能。我們可以使用條件編譯來方便地裁剪功能。

2、條件編譯語句#if

條件編譯語句#if的形式是

1

#if expression

2...

3#elif expression

4...

5#elif expression

6...

7#else

8...

9#endif

其中#elif分支語句是可選的,#else分支語句也是可選的。

如果expression的邏輯值為「真」,則在預編譯階段,保留這段**。如果邏輯值為「假」,則在預編譯階段刪除這段**。

3、在條件編譯的基礎上使用defined()函式

形式為:

1

#if defined(some_macro)

2 some statements

defined()用來檢測some_macro這個巨集是否定義,如果定義,則返回「真」,否則,返回「假」。根據返回的邏輯值,就可以決定是否在預編譯階段刪除與保留

tip1: #if defined(some_macro) 可以簡寫為 #ifdef

tip2: #if !defined(some_macro)與#if defined(some_macro)行為相反,亦可簡寫為#ifndef

tip3: don't forget #endif

#ifdef 和 #if defined 的區別在於,後者可以組成複雜的預編譯條件,比如

#if defined (aaa) && defined (bbb)

*********

#endif

#if defined (aaa) || version > 12

*********

#endif

而#ifdef 就不能用上面的用法,也就是說,當你要判斷單個巨集是否定義時#ifdef 和 #if defined 效果是一樣的,但是當你要判斷複雜的條件時,只能用 #if

if 條件編譯

1.格式 if constant expressionstatements elif constant expressionstatements else statements endif 其中 constant expression 常量表示式 字面值常量,或者乙個有 define定義的符號 由預...

條件編譯 if

1 為什麼需要條件編譯 客戶的需求在不停地發生變化,一會兒需要這個功能,一會兒不需要這個功能。我們可以使用條件編譯來方便地裁剪功能。2 條件編譯語句 if 條件編譯語句 if的形式是 1 if expression 2.3 elif expression 4.5 elif expression 6....

Golang 編譯 條件編譯

條件編譯 標籤編譯 build tag build build linux and 386 or darwin and not cgo 以 開始,例如 build 支援 goos 與 goarch 並可以具有多個值,用 分割,例如 build linux,darwin,freebsd 支援 不等條件...