第六章 預處理 宏定義文件包含_第1頁
第六章 預處理 宏定義文件包含_第2頁
第六章 預處理 宏定義文件包含_第3頁
第六章 預處理 宏定義文件包含_第4頁
第六章 預處理 宏定義文件包含_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、白 雪 飛中國科學技術大學電子科學與技術系Dept. of Elec. Sci. & Tech., USTCFall, 2003l預處理l宏定義l文件包含l條件編譯l預處理n在編譯之前對源程序進行“預處理”n預處理命令不是C語句,末尾沒有分號n預處理命令不在可執(zhí)行文件中執(zhí)行n預處理命令都以#開始n包括宏定義、文件包含、條件編譯等l舉例n#define MAX 1000n#include l無參數的宏定義l帶參數的宏定義l一般形式n#define 標識符 字符串l說明n把源程序中相應標識符予以替換n僅是簡單的字符串替換,沒有任何語法正確性檢查n有效范圍從定義處開始,到文件結束,或者由#undef

2、命令終止作用域n行末沒有分號,如有分號將會被一起替換#define R 3.0#define PI 3.1415926#define L 2*PI*R#define begin #define end #define forever for(;)void main()begin /* */ printf(L=%f, L);#undef PI /* 取消對PI的宏定義 */ forever; /* for(;); 無限循環(huán) */end /* */l一般形式n#define 宏名(參數表) 字符串l說明n宏定義僅是把參數作為字符串做簡單替換,而不做任何運算求值和語法檢查n宏名與參數表的括號之間不應

3、有空格n應注意參數替換后可能出現的語法錯誤和意料之外的運算n應在宏定義內容及其中參數兩邊加上括號#define S1(a,b) a*b#define S2(a,b) (a)*(b)#define max(a,b) (a)(b)?(a):(b)void main() int x=3, y=4, i=5, j=6, s, z; s=S1(x+y, x-y); /* s=x+y*x-y; s=11 */ s=S2(x+y, x-y); /* s=(x+y)*(x-y); s=-7 */ z=max(i+, j+); /* z=(i+)(j+)?(i+):(j+); */ /* z=7, i=6, j=8 */l一般形式n#include filenamen#include l說明n把另一個源文件的全部內容包含進來n預編譯后,它們已成為一個文件n頭文件的擴展名一般用.h,但并非規(guī)定n調用庫函數一般使用,也可以使用n調用用戶編寫的頭文件應使用l條件編譯n對某些部分的源程序指定編譯的條件n可以減少被編譯的語句,減少目標程序的長度,減少運行時間n有利于移植程序,增加程序的靈活性l命令形式n#i

溫馨提示

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

評論

0/150

提交評論