實驗12編譯預處理_第1頁
實驗12編譯預處理_第2頁
實驗12編譯預處理_第3頁
實驗12編譯預處理_第4頁
全文預覽已結束

下載本文檔

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

文檔簡介

1、實驗12:編譯預處理 實驗名稱: 編譯預處理 成績: 實驗日期: 年 月 日 實驗報告日期: 年 月 日本實驗要求在安裝了Visual C+6.0的計算機系統上完成。一、實驗目的1、 利用Visual C+觀察編譯預處理的效果2、 學會利用Visual C+自我發現預處理問題的方法3、 掌握宏定義、調用、展開二、實驗內容1、 定義一個帶參數宏,實現兩個參數的值交換。要求寫出測試主函數,主函數中使用此宏完成兩個數交換,輸出結果。2、 定義一個帶參數宏,判斷一個字符是否為字母字符,若是,結果為1,否則結果為0。要求寫出測試主函數使用此宏,輸出結果。3、 利用Visual C+觀察編譯預處理的效果三

2、、實驗要求1、 實驗前閱讀本實驗指導2、 1、2題應預先編制好源程序,上機調試正確。3、 3題按實驗步驟完成實驗。4、 完成思考題。四、實驗步驟、過程1、 在Turbo C下完成1、2兩程序題。2、 將1題宏定義的一對大括號刪除(故意制造一個錯誤),保存后,重新編譯,錯了嗎?提示的錯誤是:“Undefined symbol 't' in function main”,光標指示的錯誤在哪里? 。到底錯在哪里,有好方法來查找這種莫名其妙的錯誤嗎?繼續下面的工作。3、 利用Visual C+觀察編譯預處理的效果1) 查找Visual C+的“命令行環境設置批處理程序”(VCVARS3

3、2.BAT)的位置。假設在:D:MSVSVC98Bin目錄中。2) 進入Dos窗口,切換到VCVARS32.BAT所在盤(D:盤)、所在目錄(D:MSVSVC98Bin)。d:<CR> - 切換到D盤cd D:MSVSVC98Bin<CR> -進入目錄3) 運行Visual C+的“命令行環境設置批處理程序”,設置Visual C+命令行環境。VCVARS32<CR>Setting environment for using Microsoft Visual C+ tools.(看到此提示表示VC命令行環境已經設置完成)4) 切換到用戶盤,用戶目錄,應該看到

4、你的程序12_1.c。dir<CR>5) Visual C+編譯預處理12_1.cCL 12_1.c /P<CR>用戶目錄中產生文件12_1.i,這就是預處理后的代碼。6) 用任何文本編輯器打開12_1.i,還有宏定義、宏調用嗎?哦沒有了,預處理掉了,宏調用代碼被展開了!發現問題沒有?!別再騙我!#line 1 "12_1.c"void main() int x,y; printf("enter 2 integer (x y) to swap:"); scanf("%d%d",&x,&y); i

5、nt t=x; x=y; y=t; printf("swap.nx=%d,y=%dn",x,y);變量應該在函數執行代碼前定義,Turbo C編譯器指示的錯誤位置是宏調用位置(預處理后宏展開的位置),實際是我們編寫宏定義時考慮不周到造成的,加上一對就可以展開為復合語句,復合語句內部是可以定義變量的,沒有就出現了這個問題。Turbo C在編譯前也進行預處理,這里做宏展開,可是在Turbo C中預處理過程以及預處理后的代碼我們平時根本看不到,所以這種錯誤有時很難找。Turbo C真笨,_。五、源程序清單、測試數據、結果。1、 帶參數宏,實現兩個參數的值交換(文件名12_1.c)

6、#define SWAP(a,b) int t=a; a=b; b=t;void main() int x,y; printf("enter 2 integer (x y) to swap:"); scanf("%d%d",&x,&y); SWAP(x,y); printf("swap.nx=%d,y=%dn",x,y);測試運行:enter 2 integer (x y) to swap:10 20<CR>swap.x=20,y=102、 帶參數宏,判斷一個字符是否為字母字符(文件名12_2.c)#def

7、ine MYALPHA(c) (c>='A'&&c<='Z'|c>='a'&&c<='z'?1:0)void main() char ch; printf("enter a char:"); scanf("%c",&ch); if(MYALPHA(ch) printf("%c is an alpha.n",ch); else printf("%c isn't an alpha.n",ch);測試運行:enter a char:1<CR>1 isn't an alpha.enter a char:A<CR>A is an alpha.六、實驗出現的問題、實驗結果分析1、2、3、七、實驗小結和思考1、 實現兩個參數的值交換的帶參數宏SWAP可以用于兩個浮點數嗎?答:可以,宏不檢查參數類型。2、 思考:利用Visual C+可以觀察編譯預處理的效果,這有什么用?答:(略)3、 下面程序有什么錯誤,利用Vis

溫馨提示

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

評論

0/150

提交評論