02.預處理指令條件編譯_第1頁
02.預處理指令條件編譯_第2頁
02.預處理指令條件編譯_第3頁
免費預覽已結束,剩余7頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、預處理指令(條件編譯)講師:李南江條件編譯的概念在很多情況下,我們希望程序的其中一部分代碼只有在滿足一定條件時才進行編譯,否則不參與編譯(只有參與編譯的代碼最終才能被執行),這就是條件編譯。一、基本用法#if 條件1 .code1. #elif 條件2 .code2. #else .code3. #endif一、基本用法1如果條件1成立,那么編譯器就會把#if 與 #elif之間的code1代碼編譯進去(注意:是編譯進去,不是執行,很平時用的if-else是不一樣的)2 如果條件1不成立、條件2成立,那么編譯器就會把#elif 與 #else之間的code2代碼編譯進去3 如果條件1、2都不成

2、立,那么編譯器就會把#else 與 #endif之間的code3編譯進去4 注意,條件編譯結束后,要在最后面加一個#endif,不然后果很嚴重(自己思考一下后果)5 #if 和 #elif后面的條件一般是判斷宏定義而不是判斷變量,因為條件編譯是在編譯之前做的判斷,宏定義也是編譯之前定義的,而變量是在運行時才產生的、才有使用的意義二、舉個例子#include 2 3 #define MAX 11 4 5 int main () 6 7 #if MAX = 0 8 printf(MAX是0); 9 #elif MAX 010 printf(MAX大于0);11 #else12 printf(MAX

3、小于0);13 #endif14 return 0;15 在第3行定義了一個宏MAX,當然在開發中這個MAX可能被定義在其他頭文件中,現在只是為了方便演示,就寫到main函數上面了。注意第7到第13行的條件編譯語句。由于MAX為11,所以#elif的條件成立,第10行代碼將會被編譯進去,其實編譯預處理后的代碼是這樣的:int main ()4 5 printf(MAX大于0);6 return 0;7 三、其他用法1.#if defined()和#if !defined()的用法#if 和 #elif后面的條件不僅僅可以用來判斷宏的值,還可以判斷是否定義過某個宏。比如:#if defined(MAX) .code.#endif如果前面已經定義過MAX這個宏,就將code編譯進去。它不會管MAX的值是多少,只要定義過MAX,條件就成立。條件也可以取反:#if !defined(MAX) .code.#endif如果前面沒有定義過MAX這個宏,就將code編譯進去。2.#ifdef和#ifndef的使用#ifdef的使用和#if defined()的用法基本一致 #ifdef MAX .code. #endif如果前面已經定義過MAX這個宏,就將code編譯進去。* #ifndef又和#if !defined()的用法基本一致 #if

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論