C語(yǔ)言【預(yù)處理器】
1、一些關(guān)于預(yù)處理的知識(shí)
? C代碼中,一般帶 # 的都是預(yù)處理指令,包括 宏替換、文件包含、條件編譯 等。
? 為兼容一些老編譯器, # 前后一般不寫(xiě)空格
? 預(yù)處理指令后面不加分號(hào)。
2、宏定義
// 格式如下
#define 宏名稱 (替換文本) // 這個(gè)替換文本記得加上括號(hào),因?yàn)槭侵苯游谋咎鎿Q,可能會(huì)由于優(yōu)先級(jí)而混亂
// 這個(gè)替換文本可以是字面量、表達(dá)式、函數(shù)等
// 帶參數(shù)的宏。 舉個(gè)例子
#define print_int(n) printf("%d\n", n)
void main(){
// 宏的使用
int a = 10;
print_int(a);
}
// 宏可嵌套
#define PI 3.14
#define S PI*2*2
// 使用宏定義數(shù)據(jù)類型
#define BOOL int
取消宏定義。在想解除宏定義的代碼前加 #undef 宏名稱。之后的代碼就不能使用定義好的宏了。
// 帶參數(shù)的宏。舉個(gè)例子
#define print_int(n) printf("%d\n", n) // 這個(gè)參數(shù)不能指定類型,需要自己謹(jǐn)慎,但這種方法比函數(shù)高效
3、文件包含
? 自定義頭文件,用" " 。 引號(hào)里填相對(duì)路徑或絕對(duì)路徑。基于當(dāng)前目錄加./或不加
? 頭文件如果使用 " " 會(huì)先從當(dāng)前目錄下找,找不到再?gòu)南到y(tǒng)找。
? 頭文件如果使用 <> 會(huì)直接從系統(tǒng)找。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-746901.html
? Win和Linux路徑分隔符分別是什么?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-746901.html
4、條件編譯
#if 條件 ... #elif ... #else ... #endif // 這個(gè)endif不能省略
#ifdef 宏名稱 ... #else ... #endif // 宏名稱定義過(guò)則條件成立。
#if defined 宏名稱 ... #elif ... #else ... #endif // 同上。
#ifndef 宏名稱 ... #else ... #endif // 宏名稱沒(méi)有定義過(guò)則條件成立。
到了這里,關(guān)于C語(yǔ)言【預(yù)處理器】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!