- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
編譯預處理宏定義檔包含
作用:對根源程式編譯之前做一些處理,生成擴展C根源程式種類宏定義#define檔包含#include條件編譯#if--#else--#endif等格式:“#”開頭占單獨書寫行語句尾不加分號
不帶參數宏定義一般形式:#define宏名[宏體]功能:用指定識別字(宏名)代替字元序列(宏體)宏展開:預編譯時,用宏體替換宏名---不作語法檢查宏體可缺省,表示宏名定義過或取消宏體定義位置:任意(一般在函數外面)作用域:從定義命令到檔結束#undef可終止宏名作用域格式:#undef宏名宏定義可嵌套,不能遞歸例#defineMAXMAX+10(?)引號中的內容與宏名相同也不置換宏定義中使用必要的括弧()7.1宏定義
一般形式:#define宏名(參數表)宏體例#defineS(r)PI*r*r相當於定義了不帶參宏S,代表字串“(r)PI*r*r”宏展開:形參用實參換,其他字元保留宏體及各形參外一般應加括弧()例#defineS(a,b)a*b………..area=S(3,2);宏展開:area=3*2;不能加空格例#definePOWER(x)x*xx=4;y=6;z=POWER(x+y);宏展開:z=x+y*x+y;一般寫成:#definePOWER(x)((x)*(x))宏展開:z=((x+y)*(x+y));帶參數宏定義
#defineMAX(x,y)(x)(y)?(x):(y)…….main(){inta,b,c,d,t;…….t=MAX(a+b,c+d);……}宏展開:t=(a+b)(c+d)?(a+b):(c+d);intmax(intx,inty){return(xy?x:y);}main(){inta,b,c,d,t;…….t=max(a+b,c+d);………}例用宏定義和函數實現同樣的功能
帶參宏函數處理過程不分配記憶體簡單的字元置換分配記憶體先求實參值,再代入形參處理時間編譯時程式運行時參數類型無類型問題定義實參,形參類型程式長度變長不變運行速度不占運行時間調用和返回占時間帶參的宏與函數區別
功能:一個原始檔案可將另一個原始檔案的內容全部包含進來一般形式:#include“檔案名”或#include檔案名#include“file2.c”file1.cfile2.cfile1.cfile2.cABA處理過程:預編譯時,用被包含檔的內容取代該預處理命令,再對“包含”後的檔作一個原始檔案編譯直接按標準目錄有哪些信誉好的足球投注网站“”先在當前目錄有哪些信誉好的足球投注网站,再有哪些信誉好的足球投注网站標準目錄可指定路徑7.2檔包含
原始檔案(*.c)頭檔(*.h)宏定義數據結構定義函數說明等檔包含可嵌套#include“file2.c”file1.cAfile3.cC#include“file3.c”file2.cBfile1.cAfile3.cfile2.c被包含檔內容
/*powers.h*/#definesqr(x)((x)*(x))#definecube(x)((x)*(x)*(x))#definequad(x)((x)*(x)*(x)*(x))/*ch8_10.c*/#includestdio.h#included:\fengyi\bkc\powers.h#defineMAX_POWER10voidmain(){intn;printf(number\texp2\texp3\texp4\n);printf(----\t----\t-----\t------\n);for(n=1;n=MAX_POWER;n++)printf(%2d\t%3d\t%4d\t%5d\n,n,sqr(n),cube(n),quad(n));}例檔包含舉例
文档评论(0)