學(xué)習(xí)筆記--C語(yǔ)言的預(yù)處理--條件編譯
#define 宏定義
#undef 撤銷(xiāo)已定義過(guò)的宏名
#include 使編譯程序?qū)⒘硪辉次募度氲綆в?include 的源文件中
#if
#line 改變當(dāng)前行數(shù)和文件名稱(chēng),它們是在編譯程序中預(yù)先定義的標(biāo)識(shí)符
命令的基本形式如下:#line number["filename"]
#error 編譯程序時(shí),只要遇到#error 就會(huì)生成一個(gè)編譯錯(cuò)誤提示消息,并停止編譯
#pragma
條件編譯
條件編譯的功能使得我們可以按不同的條件去編譯不同的程序部分,因而產(chǎn)生不同的目標(biāo)代碼文件。這對(duì)于程序的移植和調(diào)試是很有用的。條件編譯有三種形式,下面分別介紹
第一種形式:
#ifdef 標(biāo)識(shí)符
程序段1
#else
程序段2
#endif
它的功能是,如果標(biāo)識(shí)符已被#define 命令定義過(guò)則對(duì)程序段1 進(jìn)行編譯;否則對(duì)程序段2進(jìn)行編譯。如果沒(méi)有程序段2(它為空),本格式中的#else 可以沒(méi)有,即可以寫(xiě)為:
#ifdef 標(biāo)識(shí)符
程序段
#endif
第二種形式:
#ifndef 標(biāo)識(shí)符
程序段1
#else
程序段2
#endif
與第一種形式的區(qū)別是將“ifdef”改為“ifndef”。它的功能是,如果標(biāo)識(shí)符未被#define 命令定義過(guò)則對(duì)程序段1 進(jìn)行編譯,否則對(duì)程序段2 進(jìn)行編譯。這與第一種形式的功能正相反。
第三種形式:
#if 常量表達(dá)式
程序段1
#else
程序段2
#endif
它的功能是,如常量表達(dá)式的值為真(非0),則對(duì)程序段1 進(jìn)行編譯,否則對(duì)程序段2 進(jìn)行編譯。因此可以使程序在不同條件下,完成不同的功能。
至于#elif 命令意義與else if 相同,它形成一個(gè)if else-if 階梯狀語(yǔ)句,可進(jìn)行多種編譯選擇。
評(píng)論