久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

《c語言程序設計新視角》第九章編譯預處理小結

時間:2019-05-13 18:59:30下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《《c語言程序設計新視角》第九章編譯預處理小結》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《《c語言程序設計新視角》第九章編譯預處理小結》。

第一篇:《c語言程序設計新視角》第九章編譯預處理小結

《c語言程序設計新視角》第九章 編譯預處理小結 編譯是把語句翻譯成機器碼,預編譯是在譯碼前進行的處理法,文件包含把已有的文件為我所用來添加,宏定義的作用是替換,方便程序編輯的好方法,條件編譯可實現按需編譯,方便調試讓代碼適應性更佳。

第二篇:C語言程序設計教案 第九章 編譯預處理

第九章 編譯預處理

課題:

教學目的: 教學重點: 教學難點: 第九章 編譯預處理

1、了解預處理的概念及特點

2、掌握有參宏與無參宏的定義及使用,領會文件包含的使用及效果 掌握宏的使用,文件包含 有參宏與無參宏的使用

步驟一 復習引導

ANSI C標準規定可以在C源程序中加入一些“預處理命令”,以改進程序設計環境,提高編程效率。

這些預處理命令是由ANSI C統一規定的,但它不是C語言本身的組成部分,不能直接對它們進行編譯。必須在對程序進行通常的編譯之前,先對程序中這些特殊的命令進行“預處理”,即根據預處理命令對程序作相應的處理。經過預處理后程序不再包括預處理命令了,最后再由編譯程序對預處理后的源程序進行通常的編譯處理,得到可供執行的目標代碼。

步驟二 講授新課

C語言與其他高級語言的一個重要區別是可以使用預處理命令和具有預處理的功能。C提供的預處理功能主要有以下三種: 宏定義、文件包含、條件編譯。

分別用宏定義命令、文件包含命令、條件編譯命令來實現。為了與一般C語句相區別,這些命令以符號“ #” 開頭。

§9.1宏定義

宏: 代表一個字符串的標識符。

宏名:被定義為“宏”的標識符。

宏代換(展開):在編譯預處理時,對程序中所有出現的 “宏名”,用宏定義中的字符串去代換的過程。

一、不帶參數的宏定義

一般形式:

#define

標識符

字符串

#define PI 3.1415926

main()

{ float l, s, r, v;

printf(“input radius:”);

scanf(“%f”, &r);

l = 2.0*PI*r;

s = PI*r*r;

v = 3.0/4*PI*r*r*r;

printf(“%10.4f,%10.4f,%10.4n”, l, s, v);

}

例如:由鍵盤輸入y值,求表達式:

3(y2+3y)+ 4(y2+3y)+ y(y2+3y)#define M(y*y+3*y)main(){ int s, y;

printf(“Input a number :”);scanf(“%d”,&y);

s=3*M+4*M+y*M;

printf(“s=%dn”,s);} 先宏展開:s=3*(y*y+3*y)+4*(y*y+3*y)+ y*(y*y+3*y)再與源程序合并

說明:

⑴宏名一般用大寫表示,以便與變量名區分。⑵使用宏名使程序易讀,易修改。⑶只作簡單的置換,不作正確性檢查。⑷宏定義不是C語句,不必在行末加分號。

⑸宏名的作用域一般從自定義命令到本源文件結束。⑹可以用# undef命令終止宏定義的作用域。⑺宏定義允許嵌套,允許層層置換。

⑻宏名在源程序中用雙引號括起來,則TC中預處理不對其作宏代換。

例: printf(“L=%f”, L);中雙引號內L不替換。

⑼宏定義與定義的變量不同,宏只作字符替換,不分配內存空間。⑽對“輸出格式”進行宏定義,可以減少書寫麻煩 例如:

#define P printf #define D “%d,%d,%dn”

#define F “%6.2f,%6.2f,%6.2fn” main(){ int a=5,c=8,e=11;

float b=3.8,d=9.7;f=21.08;

P(D,a,c,e);

P(F,b,d,f);

P(F,a+b,c+d,e+f);}

二、帶參數的宏定義

格式:#define

宏名(參數表)字符串

例:#define s(a,b)a*b

{……

area =s(3,2);

……}

對帶參的宏展開后,為area=3*2;

例: #define M(y)y*y+3*y

{……

k=M(5);

……}

對其展開后,為k=5*5+3*5;

說明:

⑴對帶參數的宏展開只是將宏名后括號內的實參

字符串代替#define命令行中的形參。

⑵宏定義時,在宏名與帶參數的括號之間不應加

空格,否則將空格以后的字符都作為替代字符

串的一部分。

⑶帶參宏定義,形參不分配內存單元,因此不必

作類型定義。(與函數的區別之一)⑷帶參宏與函數的區別之二:

例如: main(){ int i=1;

while(i<=5)

printf(“%dt”,SQ(i++));} SQ(int y){ return(y)*(y);} 其結果為:1

如:

#define SQ(y)((y)*(y))main(){ int i =1;

while(i<=5)

printf(“%dt”,SQ(i++));} 運行結果: 2 12 30

例:利用宏定義求兩個數中的大數。

#define MAX(a,b)(a>b)?a:b main(){int x, y, max;

scanf(“%d%d”, &x, &y);

max =MAX(x, y);

printf(“max=%dn”, max);} 帶參的宏定義和函數不同:

1、函數調用時,先求實參表達式值,后代入。而帶參的宏只是進行簡單的字符替換。

2、函數調用是在程序運行時處理的,分配臨時的內存單元。而宏展開則是在編譯時進行的,不分配內存單元,不進行值的傳遞,也無“返回值”。

3、對函數中的實參和形參都要定義類型,類型應一致。而宏不存在類型問題,宏名和參數無類型,只是一個符號代表,展開時代入指定的字符即可。

4、調用函數只可得到一個返回值,而用宏可以設法得到幾個結果。

5、使用宏次數多時,宏展開后使源程序增長,而函數調用不使源程序變長。

6、宏替換不占運行時間,只占編譯時間。

而函數調用則占用運行時間(分配單元、保留現場、值傳遞、返回)一般用宏代表簡短的表達式比較合適。

也可利用宏定義實現程序的簡化。例9.5:

#define PR printf #define NL “n” #define D “%d” #define D1 D NL #define D2 D D NL #define D3 D D D NL #define D4 D D D D NL #define S “%s” main(){ int a,b,c,d;

char string[]=“CHINA”;

a=1;b=2;c=3;d=4;

PR(D1,a);

PR(D2,a,b);

PR(D3,a,b,c);

PR(D4,a,b,c,d);

PR(S, string);}

§9.2 “文件包含”處理

“文件包含”處理是指將指定的被包含文件的全部內容插到該控制行的位置處,使其成為源文件的一部分參與編譯。因此,被包含的文件應該是源文件。通常置于源程序文件的首部,故也稱為“頭文件”。

C編譯系統提供的頭文件擴展名為“.h”,但設計者可根據實際情況,自行確定包含文件的后綴、名字及其位置。

一般形式,#include “文件名”

#include <文件名>

文件format.h

#define PR printf #define NL “n” #define D “%d” #define D1 D NL #define D2 D D NL #define D3 D D D NL #define D4 D D D D NL #define S “%s” 文件file1.c #include “format.h” main(){ int a,b,c,d;

char string[]=“CHINA”;

a=1;b=2;c=3;d=4;

PR(D1,a);

PR(D2,a,b);

PR(D3,a,b,c);

PR(D4,a,b,c,d);

PR(S, string);} 注:被包含的文件應是源文件,而不應是目標文件。

頭文件除了可以包含函數原型和宏定義外,也可以包括結構體類型定義和全局變量定義等。說明:

1、一個include命令只能指定一個被包含文件,如果要包含n個文件,要用n個include命令。

2、如果文件1包含文件2,而文件2中要用到文件3的內容,則可在文件1中用兩個include命令分別包含文件2和文件3,而且文件3應出現在文件2之前,即在“file1.c”中定義:

#include “file3.h”

#include “file2.h”

3、在一個被包含文件中又可以包含另一個被包含文件,即文件包含是可以嵌套的。

4、被包含文件(file2.h)與其所在的文件(file1.c),在預編譯后已成為同一個文件。

5、在#include 命令中,文件名可以用雙引號或尖括號括起來。

如: #include

#include “file2.h” 二者的區別:

用尖括號時稱為標準方式,系統到存放C庫頭文件所在的目錄中尋找要包含的文件。

用雙引號時,系統先在用戶當前目錄中尋找要包含的文件,若找不到,再按標準方式查找。#include “c:tcincludemyfile.h”

/*正確*/ #include

/*正確*/ #include

/*錯誤*/

用尖括號:帶路徑:按指定路徑去尋找被包含文件,但此時被包含文件不能以“.h”結尾,否則錯誤。

不帶路徑:僅從指定標準目錄下找。

用引號: 帶路徑:按指定路徑去尋找被包含文件,不再從當前目錄和指定目錄下找。

不帶路徑:先在當前目錄下找,找不到再在系統指定的標準目錄下找。

步驟三 課堂小結

本課主要講解了宏定義、“文件包含”處理。對帶參數的宏的使用,及與函數的使用的區別。搞清經常使用的頭文件。

步驟四 布置作業 上機作業:(第九章課后練習)9.4 書面作業:(第九章課后練習)9.7、9.8

第三篇:《c語言程序設計新視角》第八章文件小結

《c語言程序設計新視角》第八章 文件小結 文件存數據時間長久,二進制與文本形式自由。程序操縱它三個步驟: 打開、讀寫、關閉不要遺漏。注意路徑與名稱打開不愁; 讀寫有系列函數功能足夠; 記得關閉在操作之后。

第四篇:《c語言程序設計新視角》第六章指針小結

《c語言程序設計新視角》第六章 指針小結 指針特殊存地址,變量運算受限的。指針類型要注意,不一定是整型的。想要存取單元值,先定地址是哪的。指針若要移一下,步長類型確定的。

第五篇:《c語言程序設計新視角》第三章 程序語句小結

《c語言程序設計新視角》第三章 程序語句 小結 各種語句格式規則要對應;

三選擇四循環語句記分明;

單、雙選擇用if;多路選擇switch靈。初值、條件與增量,循環要素三并行。

do while做了再說;while判后再執行; for要擺明三要素,耍簡約風格數它精。

continue和break,跳越不一般,遠近要分清。

下載《c語言程序設計新視角》第九章編譯預處理小結word格式文檔
下載《c語言程序設計新視角》第九章編譯預處理小結.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    《c語言程序設計新視角》第十章 程序調試及測試小結

    《c語言程序設計新視角》第十章 程序調試及測試 小結 調試前測試樣例設計要費思忖, 輸入是什么輸出有哪些,事前要確認, 正常、異常、邊界情形要想周全, 認真仔細達到要求才能完......

    《c語言程序設計新視角》第七章 復合的數據類型小結

    《c語言程序設計新視角》第七章 復合的數據類型小結 結構是張表,類型自己定; 變量與數組,可為結構型; 申請空間后,讀寫任意行。 指針指結構,偏移要分清。......

    《c語言程序設計新視角》第五章 函數小結(樣例5)

    《c語言程序設計新視角》第五章函數小結 說明、定義、調用三種面目都是我。 傳信息單方向雙方向、直接間接都工作。 參數表上輸入來、使用return 出結果; 一個數值直接傳,多值......

    《c語言程序設計新視角》第二章程序中的數據小結

    《c語言程序設計新視角》第二章程序中的數據 小結 數據類型自己選, 大小長度不一般; 數據可以混合算, 注意類型會改變; 常量直接拿來用, 遇到變量分單元。......

    【好程序員學習筆記】C語言 編譯預處理命令

    文件包含: 把指定的文件插入到預處理命令行所在的位置并取代該命令行,即把指定的文件和當前的源程序文件連接成一個源文件。 #include 在文件包含目錄中去查找指定的文件,并將......

    C語言程序設計

    1. Problem A: Hello world! Description Xiao_ming有兩個哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放學回家,父母分別跟他們打招呼。 Input 無 Output 請輸出: Hello Da_min, He......

    C 語言程序設計

    《C 語言程序設計》主要在計算機軟件、計算機網絡、計算機應用、通信技術、智能電子、電子信息工程、多媒體以及核工程與核技術等專業中開設,是電子信息類、機械類等工科專業......

    經典C語言程序設計例題

    經典C語言程序設計例題 【程序1】 題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組......

主站蜘蛛池模板: 国产精品亚洲精品日韩己满十八小| 久久国产色av免费观看| 中文字幕亚洲综合小综合在线| 国产sm重味一区二区三区| 国产精品久久久久久久久ktv| 自拍亚洲综合在线精品| 92精品成人国产在线观看| 色妞色视频一区二区三区四区| 久青草影院在线观看国产| 亚洲综合精品第一页| 少妇伦子伦精品无吗| 亚洲人成伊人成综合网久久久| 成人精品一区二区三区电影| 日本成熟少妇激情视频免费看| 日本一区二区三区免费高清| 草草久久97超级碰碰碰| 小13箩利洗澡无码免费视频| av无码天堂一区二区三区| 久久中文精品无码中文字幕下载| 国产综合久久亚洲综合| 国产成人无码va在线播放| 亚洲 激情 小说 另类 欧美| 久久精品成人一区二区三区| 亚洲欧美成人一区二区在线电影| 国产伦人人人人人人性| 西欧free性满足hd老熟妇| 无码少妇一区二区| 国产精品原创巨作av| 国产在线无码制服丝袜无码| 岛国av无码免费无禁网站麦芽| 狠狠综合久久综合中文88| 娇妻玩4p被三个男人伺候电影| 免费人成网站视频在线观看国内| 亚洲日韩久久综合中文字幕| 亚洲精品久久无码av片软件| 免费看成人午夜福利专区| 蜜桃av色偷偷av老熟女| 手机看片国产av无码| 亚洲国产精品ⅴa在线观看| 亚洲色欲久久久久综合网| 亚洲欧美国产精品无码中文字|