- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
条件式编译指引
第七章 前置處理器 本章學習目標: 使用廣泛的巨集代換指引-#define 定義含有引數的巨集函式 利用條件式編譯指引來控制編譯流程 介紹#include指令,如何在專案中加入自訂標頭檔 章節目錄 章節目錄 7-1 前置處理器 在介紹前端處理器之前,讓我們先了解一下前端處理器的歷史。 C++所使用的「前端處理器」(Preprocessor)大部份是源自於C語言 只是C++將許多的前端處理器以較新的程式語法取代 其目地就是讓新一代的C++語法更靈活、程式寫作的空間更大。 C++前端處理指令 那麼C++中使用的前端處理器有那些呢?以下表說明: 前置處理指引 C++的前置處理器是一個巨集處理器,當程式要編譯時會自動啟動,主要是用來處理C++程式中含有#符號開頭的敘述,稱為「前置處理指引」(Preprocessor directive)敘述。 前置處理指引與C++敘述的最大差別在於使用前置處理指引時必須以「#」為開頭。雖然程式中任何地方都可以使用,但是習慣把它放在主程式或其它函式前面。 前置處理指引的有效範圍是從指引處開始,直到程式結束為止。 章節目錄 7-2 巨集指令 介紹前端處理指引「巨集代換指引」(#define)。 C++撰寫程式時,#define的使用最廣泛 它的作用是將程式中經常使用的常數、字串、函式以巨集名稱來取代。 章節目錄 7-2-1 如何定義巨集 #define定義中最常用到的功能 就是以定義的識別符號來取代程式敘述中較常使用的字元組 以便讓程式設計師在編寫程式時,更了解這個字元組在程式敘述中所代表的意義及便利性 這樣的取代過程我們稱之為「巨集代換指引」,其語法如下: 使用define敘述 我們以#define定義一個名稱為「PI」巨集,替代內容是「3.14159」 當編譯器碰到PI時,就會以「3.14159」來取代,再執行編譯程序 範例:round.cpp 執行程式:round.cpp 瞭解#define定義巨集的用法,利用PI巨集來取代數值「3.14159」。 第6行宣告一個PI巨集。 第12行計算圓周長 第13行計算圓面積,此處加入pow()函式來代換原有的(半徑*半徑)。 第15行輸出結果時,加入setw()函式,讓輸出字元為8個字元,並向右對齊。 章節目錄 7-2-2 函式巨集 #define這個前置處理指引還有另一種定義格式,就是在巨集名稱內加入引數,語法如下: 範例:macargu.cpp 執行程式:macargu.cpp 第3~5行宣告三個巨集,SQU計算數值平方,CUBE計算數值立方,BIG找出最大值。 第10~19行以do/while迴圈來處理使用者輸入的兩個數值,將number1以SQU巨集來計算平方,number2以CUBE巨集來取得立方值,以BIG來找出最大值。 使用含有引數的函式巨集時 章節目錄 7-2-3 前端處理運算子 在函式巨集中也有用到「#」及「##」運算子 其中「#」我們稱為字串運算子 「#」的功用是將#之後的引數以引號字串顯示 而「##」的功用則是將兩個引數連起來而已 在此我們直接以範例「merging.cpp」來瞭解。 範例:merging.cpp 程式解說:merging.cpp 第4行利用ShowStr(x)巨集來定義「#」運算子,將引數取代成引號字串。 第5行定義CONBINE(x, y ,z)巨集,使用「##」運算子將引數相連的巨集。 第8行顯示使用巨集ShowStr(x),引數填入HELLO!的結果 第10行顯示使用巨集CONBINE(x, y, z) , 引數填入a、b、c的結果。 應該使用巨集還是函式 章節目錄 7-3 條件式巨集 條件式編譯指引,顧名思義就是在編譯時,透過前置處理器,讓C++編譯器依據定義的條件進行編譯。但是,這與之前所提的判斷式不同 條件式編譯指引是在編譯階段便會執行並且判斷的指令 而一般程式碼中的條件判斷則是在程式執行時依據定義的條件進行選擇 相信大家對條件式編譯指引已有了概略性瞭解,我們將在後面的小節做更詳細的說明。 章節目錄 7-3-1 以條件式控制編譯流程 相信大家對於if…else與endif敘述的用法及它們的關係並不陌生。這也是條件式編譯指引用來控制編譯流程的「條件式編譯」(conditional compilation),C++提供了 #if、#elif #else、#endif 語法如下: 使用定義好的條件式編譯指引 利用定義好的條件式編譯指引,C++編譯器會依據定義的條件運算式有條件的編譯所包含的程式碼 假如定義的條件運算式為真,編譯器就會編譯#if之後及#else之間所包含的程式敘述1 如果條件運算式為否,則會去編譯#else及#endif之間的程式敘述2 當然與條件判斷相同的#else條件式編譯指引也可以
您可能关注的文档
最近下载
- DB3205_T 1086-2023 苏式传统文化 核雕制作技艺传承指南.pdf VIP
- 高中化学:校园生态污染源调查与治理方案设计教学研究课题报告.docx
- 新闻媒体写作培训课件.pptx VIP
- 张庄村、李楼村农民集中安置房建设项目可行性研究报告.docx VIP
- 室内供暖系统的末端装置解析.ppt VIP
- 《大国航母与舰载机》期末考试答案.docx VIP
- 人教版四年级上册教案(完整).doc VIP
- 基于bandgap版图设计毕业论文.doc VIP
- 2025年山东省中小学生海洋知识竞赛参考试题库资料500题(含答案).pdf
- 辽宁省名校联盟2025-2026学年高三上学期8月联考英语试卷.docx VIP
有哪些信誉好的足球投注网站
文档评论(0)