<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          #define 宏定義

          本文引用地址:http://www.ex-cimer.com/article/201611/322079.htm

          #undef 撤銷已定義過的宏名

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

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

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

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

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

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

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

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

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

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



          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();