编译预处理课件.pptVIP

编译预处理课件.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

編譯預處理12.1宏定義9.1.1不帶參數的宏定義定義形式:#define宏名宏體宏名是一自定義識別字,宏體是一字串,在程式中可用宏名代表宏體。例如,用PI代表3.1415926,用PR代表printf,宏定義如下:(1)#definePI3.1415926(2)#defineePRprintf程式中凡是出現3.1415926的地方,都可以以PI出現,凡是出現printf的地方,都可以以PR出現。例9-1利用宏定義求圓的周長和麵積。/*程式9-1,利用宏定義求圓的周長和麵積*/#definePI3.1415926#defineR1.0main(){floatl,s;l=2.0*PI*R;s=PI*R*R;printf(″周長=%f,面積=%f\n″,l,s);}上面程式在編譯前將進行宏展開,宏展開以後變為:main(){floatl,s;l=2.0*3.1415926*1.0;s=3.1415926*1.0*1.0;printf(″周長=%f,面積=%f\n″,l,s);}(1)宏名一般習慣用大寫字母表示,以便與變數名相區別。當然可以使用小寫字母。(2)宏定義是用宏名簡單替換宏體,也就是作簡單的置換,不作語法檢查,出現錯誤也不會報告,只有在宏展開後編譯時才會報告錯誤。(3)程式中雙引號中與宏名相同的內容不被替換。(4)宏展開後根源程式將變長。(5)使用宏名,可以減少程式中重複書寫某些宏體的工作量。(6)宏定義一般放在程式的開頭,宏名的有效範圍為定義位置到檔結束。(7)宏定義可以嵌套,後定義的宏可使用已定義的宏。9.1.2帶參數的宏定義定義形式:#define宏名(參數表)宏體帶參數的宏展開時要從左至右進行參數的簡單替換,使用起來較無參數宏定義複雜。例如:(1)#defineS(n)(n)*(n)*(n)(2)#defineT(n)1/(n)第一個式子代表n的立方,第二個式子代表n的倒數。說明:(1)列出的參數必須在宏體中用到。(2)帶參數的宏展開只是將實參簡單替換形參。當實參中含有運算,宏展開可能會出問題。如有宏定義:#defineS(n)n*n*n若將形參n用實參a+b替換,S(a+b)會變成a+b*a+b*a+b,顯然與原意不相符。如將宏定義改成:#defineS(n)(n)*(n)*(n)S(a+b)為(a+b)*(a+b)*(a+b),與原意相符。因此,在帶參的宏定義中,參數應加括弧來描述。(3)宏定義時,在宏名與帶參數的括弧之間不應加空格,否則將空格以後的部分都作為宏體。例如:#defineS(n)(n)*(n)*(n)S被認為是不帶參數的宏名,它代表(n)(n)*(n)*(n)這樣的宏體。(4)如在宏體中的參數前加上“#”,則在宏展開後該實參前後會加上雙引號,變成字串。例9–2利用帶參數的宏定義求圓的周長和麵積/*程式9-2,利用帶參數的宏定義求圓的周長和麵積*/#defineR1.0#definePI3.14159#defineC(r)2*PI*(r)#defineS(r)PI*(r)*(r)main(){printf(″周長=%f,面積=%f\n″,C(R),S(R));}上面程式宏展開後如下:main(){printf(″周長=%f,面積=%f\n″,2*3.14159

文档评论(0)

子不语 + 关注
官方认证
服务提供商

平安喜乐网络服务,专业制作各类课件,总结,范文等文档,在能力范围内尽量做到有求必应,感谢

认证主体菏泽喜乐网络科技有限公司
IP属地山东
统一社会信用代码/组织机构代码
91371726MA7HJ4DL48

1亿VIP精品文档

相关文档