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