编译预处理课件.pptVIP

编译预处理课件.ppt

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

7.2檔包含命令#include使用#include命令還要注意以下幾點:①#include命令通常用來把標準庫頭檔(如頭檔stdio.h和stdlib.h)包含到程式中。在這些檔中,一般定義符號常量、宏,或聲明函數原型。理論上,#include命令可以包含任何類型的檔,只要這些檔的內容被擴展後符合C語言語法,通常是擴展名為.h的頭檔。②由於被包含檔與#include命令所在的檔,在預處理後成為一個檔。因此,若被包含檔定義有全局變數,在#include命令所在檔中不必用extern關鍵字聲明。在前面的內容中,由於我們的程式多為單檔程式,#include指令通常只用來包含標準庫的頭檔。實際上,稍微複雜一些的C語言程式都不止一個原始檔案,其中程式員經常還會建立一些頭檔,包含了供其他程式檔公用的聲明,然後把它包含到其他需要的檔中。7.3條件編譯命令條件編譯能夠讓程式員控制預處理命令的執行和程式代碼的編譯。也就是說,條件編譯預處理命令告訴編譯器:根據編譯時的條件接受或者忽略代碼塊。條件編譯有三種形式:1.第一種形式:#ifdef識別字程式段1[#else程式段2]#endif#ifdef命令說明:如果預處理器已經定義了識別字,則編譯代碼直到下一個#else或者#endif命令出現為止。如果有#else命令,那麼,在未定義識別字時會編譯#else和#endif之間的代碼。☆☆**編譯預處理在C語言根源程式中以“#”號開頭的預處理命令都放在函數之外,一般都放在原始檔案的前面,它們稱為預處理部分。所謂預處理是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所作的工作。預處理是C語言的一個重要功能,由預處理程式負責完成。對原始檔案進行編譯時,系統將自動引用預處理程式對根源程式中預處理部分作處理,處理完再自動進入對根源程式的編譯。C語言提供了多種預處理功能,主要有宏定義、檔包含、條件編譯。7.1宏定義預處理命令#define用來建立符號常量(用符號表示的常量)和宏(用符號定義的操作)。C語言根源程式中用一個識別字來表示一個字串,稱為宏。被定義為“宏”的識別字稱為“宏名”。在編譯預處理時,對程式中所有出現的“宏名”,都用宏定義中的字串去代換,稱為“宏代換”或“宏展開”。宏定義是由根源程式中的宏定義命令完成的。宏代換是由預處理程式自動完成的。C語言中,“宏”分為有參數和無參數兩種。7.1宏定義7.1.1無參宏定義例7-1通過鍵盤輸入50個實數,將其中大於它們平均值的數列印輸出。(未使用宏定義)voidmain(){inti;floatx[50],ave=0;for(i=0;i50;i++){scanf(%f,x[i]);ave+=x[i];}ave=ave/50;for(i=0;i50;i++)if(x[i]ave)printf(%f,x[i]);}7.1宏定義7.1.1無參宏定義例7-2通過鍵盤輸入100個實數,將其中大於它們平均值的數列印輸出。(使用無參宏定義)#defineNUM100voidmain(){inti;floatx[NUM],ave=0;for(i=0;iNUM;i++){scanf(%f,x[i]);ave+=x[i];}ave=ave/NUM;for(i=0;iNUM;i++)if(x[i]ave)printf(%f,x[i]);}7.1宏定義7.1.1無參宏定義一般形式:#define識別字字串第一部分為#define命令本身。第二部分為自定義的宏名。宏的名字中不允許有空格,遵循C語言變數的命名規則。第三部分(#define行的其餘部分)稱為替換文本。預處理器在處理過程中發現程式中的宏實例後,會用它的等價替換文本代替宏。從宏變成最終替換文本的過程為“宏展開”或“宏代換”。如例7-2的程式被預處理之後,程式中所有的NUM已經由預處理器替換成了100。從這裏可以看出給符號常量取有意義的名字能提高程式的可讀性和可維護性。7.1宏定義7.1.1無參宏定義例7-3輸入一個圓的半徑,輸出該圓的周長。#definePI3.14#defineC2*PI*r /*PI是已定義的宏名*/voidmain(){doubler;printf(EnterTheRadius\n);scanf(%lf,r);

文档评论(0)

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

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

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

1亿VIP精品文档

相关文档