编译预处理课件.pptVIP

编译预处理课件.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共16页,可阅读全部内容。
  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文档。上传文档
查看更多

編譯預處理8.1宏定義與符號常量在C語言中,“宏”分為無參數的宏(簡稱無參宏)和有參數的宏(簡稱有參宏)兩種。8.1.1無參宏定義8.1.2符號常量8.1.3有參宏定義[Return]8.1.1無參宏定義1.無參宏定義的一般格式#define識別字語言符號字串其中:“define”為宏定義命令;“識別字”為所定義的宏名,通常用大寫字母表示,以便於與變數區別;“語言符號字串”可以是常數、運算式、格式串等。2.使用宏定義的優點(1)可提高根源程式的可維護性(2)可提高根源程式的可移植性(3)減少根源程式中重複書寫字串的工作量[案例8.1]輸入圓的半徑,求圓的周長、面積和球的體積。要求使用無參宏定義圓周率。/*案例代碼檔案名:AL8_1.C*//*程式功能:輸入圓的半徑,求圓的周長、面積和球的體積。*/#definePI3.1415926 /*PI是宏名,3.1415926用來替換宏名的常數*/main(){floatradius,length,area,volume;printf(Inputaradius:);scanf(%f,radius);length=2*PI*radius; /*引用無參宏求周長*/area=PI*radius*radius; /*引用無參宏求面積*/volume=PI*radius*radius*radius*3/4; /*引用無參宏求體積*/printf(length=%.2f,area=%.2f,volume=%.2f\n,length,area,volume);} [程式演示]3.說明(1)宏名一般用大寫字母表示,以示與變數區別。但這並非是規定。(2)宏定義不是C語句,所以不能在行尾加分號。否則,宏展開時,會將分號作為字串的1個字元,用於替換宏名。(3)在宏展開時,預處理程式僅以按宏定義簡單替換宏名,而不作任何檢查。如果有錯誤,只能由編譯程序在編譯宏展開後的根源程式時發現。(4)宏定義命令#define出現在函數的外部,宏名的有效範圍是:從定義命令之後,到本文件結束。通常,宏定義命令放在檔開頭處。(5)在進行宏定義時,可以引用已定義的宏名。(6)對雙引號括起來的字串內的字元,即使與宏名同名,也不進行宏展開。[Return]8.1.2符號常量在定義無參宏時,如果“語言符號字串”是一個常量,則相應的“宏名”就是一個符號常量。恰當命名的符號常量,除具有宏定義的上述優點外,還能表達出它所代表常量的實際含義,從而增強程式的可讀性。#defineEOF-1 /*檔尾*/#defineNULL0 /*空指針*/#defineMIN1 /*極小值*/#defineMAX31 /*極大值*/#defineSTEP2 /*步長*/[Return]8.1.3有參宏定義1.帶參宏定義的一般格式#define宏名(形參表)語言符號字串2.帶參宏的調用和宏展開(1)調用格式:宏名(實參表)(2)宏展開:用宏調用提供的實參字串,直接置換宏定義命令行中、相應形參字串,非形參字元保持不變。3.說明(1)定義有參宏時,宏名與左圓括號之間不能留有空格。否則,C編譯系統將空格以後的所有字元均作為替代字串,而將該宏視為無參宏。(2)有參宏的展開,只是將實參作為字串,簡單地置換形參字串,而不做任何語法檢查。在定義有參宏時,在所有形參外和整個字串外,均加一對圓括號。(3)雖然有參宏與有參函數確實有相似之處,但不同之處更多,主要有以下幾個方面:1)調用有參函數時,是先求出實參的值,然後再複製一份給形參。而展開有參宏時,只是將實參簡單地置換形參。2)在有參函數中,形參是有類型的,所以要求實參的類型與其一致;而在有參宏中,形參是沒有類型資訊的,因此用於置換的實參,什麼類型都可以。有時,可利用有參宏的這一特性,實現通用函數功能。3)使用有參函數,無論調用多少次,都不會使目標程式變長,但每次調用都要佔用系統時間進行調用現場保護和現場恢復;而使用有參宏,由於宏展開是在編譯時進行的,所以不占運行時間,但是每引用1次,都會使目標程式增大1次。[Return]8.2檔包含1.檔包含的概念檔包含是指,一個原始檔案可以將另一個原始檔案的全部內容包含進來。2.檔包含處理命令的格式#incl

文档评论(0)

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

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

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

1亿VIP精品文档

相关文档