新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 學(xué)習(xí)筆記--C語言的預(yù)處理--條件編譯

學(xué)習(xí)筆記--C語言的預(yù)處理--條件編譯

作者: 時(shí)間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
預(yù)處理名稱意義

#define 宏定義

本文引用地址:http://butianyuan.cn/article/201611/322079.htm

#undef 撤銷已定義過的宏名

#include 使編譯程序?qū)⒘硪辉次募度氲綆в?include 的源文件中

#if#else#elif#endif等條件編譯

#line 改變當(dāng)前行數(shù)和文件名稱,它們是在編譯程序中預(yù)先定義的標(biāo)識(shí)符

命令的基本形式如下:#line number["filename"]

#error 編譯程序時(shí),只要遇到#error 就會(huì)生成一個(gè)編譯錯(cuò)誤提示消息,并停止編譯

#pragma為實(shí)現(xiàn)時(shí)定義的命令,它允許向編譯程序傳送各種指令例如,編譯程序可能有一種選擇,它支持對(duì)程序執(zhí)行的跟蹤??捎?pragma 語句指定一個(gè)跟蹤選擇。

條件編譯
條件編譯的功能使得我們可以按不同的條件去編譯不同的程序部分,因而產(chǎn)生不同的目標(biāo)代碼文件。這對(duì)于程序的移植和調(diào)試是很有用的。條件編譯有三種形式,下面分別介紹

第一種形式:
#ifdef 標(biāo)識(shí)符
程序段1
#else
程序段2
#endif

它的功能是,如果標(biāo)識(shí)符已被#define 命令定義過則對(duì)程序段1 進(jìn)行編譯;否則對(duì)程序段2進(jìn)行編譯。如果沒有程序段2(它為空),本格式中的#else 可以沒有,即可以寫為:
#ifdef 標(biāo)識(shí)符
程序段
#endif
第二種形式:
#ifndef 標(biāo)識(shí)符
程序段1
#else
程序段2
#endif
與第一種形式的區(qū)別是將“ifdef”改為“ifndef”。它的功能是,如果標(biāo)識(shí)符未被#define 命令定義過則對(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 階梯狀語句,可進(jìn)行多種編譯選擇。



評(píng)論


技術(shù)專區(qū)

關(guān)閉