一,條件編譯
1,#ifdef如果巨集已經定義,則編譯下面**
2,#ifndef如果巨集沒有定義,則編譯下面**
3,#define定義巨集
4,#endif結束乙個#if……#else條件編譯塊
為了避免那些只能包含一次的標頭檔案被多次包含,可以在標頭檔案中用編譯時條件來進行控制。可以使用下面的形式
#ifndef _my_h_
#define _my_h_
要包含的內容,比如一些函式宣告,一些結構體定義等。
#endif
二,extern "c"
一般的標準標頭檔案都包含下面這些結構
#ifndef __test
#define __test
#ifdef __cplusplus
extern "c"
#endif
#endif /* __test */
c++支援函式過載,而c則不支援。函式被c++編譯器編譯後在符號表中的名字與c語言的不同。例如,假設某個函式的原型為:
void test(int a, int b);
該函式被c編譯器編譯後在符號表
中的名字為_foo,而c++編譯器則會產生像_foo_int_int之類的名字。_foo_int_int這樣的名字包含了函式名和函式的特徵標,c++就是使用這種機制來實現函式過載的。
為了實現c和c++的混合程式設計,c++提供了c連線交換指定符號extern "c"來解決名字匹配問題,函式宣告前加上extern "c"後,則編譯器就會按照c語言的方式將該函式編譯為_foo,這樣c語言中就可以呼叫c++的函式了。
條件編譯 if
1 為什麼需要條件編譯 客戶的需求在不停地發生變化,一會兒需要這個功能,一會兒不需要這個功能。我們可以使用條件編譯來方便地裁剪功能。2 條件編譯語句 if 條件編譯語句 if的形式是 1 if expression 2.3 elif expression 4.5 elif expression 6....
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....