新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 學習筆記--C語言的預處理--條件編譯

        學習筆記--C語言的預處理--條件編譯

        作者: 時間:2016-11-26 來源:網絡 收藏
        預處理名稱意義

        #define 宏定義

        本文引用地址:http://www.104case.com/article/201611/322079.htm

        #undef 撤銷已定義過的宏名

        #include 使編譯程序將另一源文件嵌入到帶有#include 的源文件中

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

        #line 改變當前行數和文件名稱,它們是在編譯程序中預先定義的標識符

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

        #error 編譯程序時,只要遇到#error 就會生成一個編譯錯誤提示消息,并停止編譯

        #pragma為實現時定義的命令,它允許向編譯程序傳送各種指令例如,編譯程序可能有一種選擇,它支持對程序執行的跟蹤。可用#pragma 語句指定一個跟蹤選擇。

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

        第一種形式:
        #ifdef 標識符
        程序段1
        #else
        程序段2
        #endif

        它的功能是,如果標識符已被#define 命令定義過則對程序段1 進行編譯;否則對程序段2進行編譯。如果沒有程序段2(它為空),本格式中的#else 可以沒有,即可以寫為:
        #ifdef 標識符
        程序段
        #endif
        第二種形式:
        #ifndef 標識符
        程序段1
        #else
        程序段2
        #endif
        與第一種形式的區別是將“ifdef”改為“ifndef”。它的功能是,如果標識符未被#define 命令定義過則對程序段1 進行編譯,否則對程序段2 進行編譯。這與第一種形式的功能正相反。

        第三種形式:
        #if 常量表達式
        程序段1
        #else
        程序段2
        #endif
        它的功能是,如常量表達式的值為真(非0),則對程序段1 進行編譯,否則對程序段2 進行編譯。因此可以使程序在不同條件下,完成不同的功能。
        至于#elif 命令意義與else if 相同,它形成一個if else-if 階梯狀語句,可進行多種編譯選擇。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 龙州县| 扎兰屯市| 弥渡县| 许昌县| 大厂| 特克斯县| 广丰县| 延边| 塔河县| 米林县| 海淀区| 霸州市| 额济纳旗| 扎赉特旗| 呼玛县| 丰宁| 梧州市| 敦化市| 安徽省| 东兴市| 玉山县| 济宁市| 睢宁县| 施甸县| 肇东市| 黄大仙区| 汕尾市| 苍梧县| 巫山县| 含山县| 巴中市| 河西区| 东明县| 高雄县| 门头沟区| 岳西县| 天台县| 明光市| 永修县| 东山县| 普兰店市|