版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter4ThePreprocessorOutlines4.1HowdoesthePreprocessorWork4.2MacroDefinition4.3FileInclusion4.1HowdoesthePreprocessorWorkPreprocessordirectivestellthecompilertopreprocessthesourcecodebeforecompiling.PreprocessorDirectivesalwaysbeginwiththe‘#’(pound/hash)symbol.LinkerExecutablecodeHowdoesthePreprocessorWorkThereare4maintypesofpreprocessordirectives:Macrodefinition--------#defineFileInclusion---------#includeConditionalCompilationOtherdirectives4.2MacroDefinition1.SimpleMacros
#defineidentifier
replacement-list #definePI3.14
Thepreprocessorreplacestheidentifierwiththereplacementlistwhereveritappearslaterinthefile
#include<stdio.h>
#definePI3.14//
SimpleMacro
intmain()
{
doubler,L,S;
scanf("%lf",&r);
L=2*PI*r;
S=PI*r*r;
printf("L=%f,S=%f\n",L,S);
return0;
}
L=2*3.14*r;
S=3.14*r*r;Nestedmacrodefinition
#defineR3.0#definePI3.1415#defineL2*PI*R8
#defineMy*y+5*y
s=3*M+4*M;
S=3*y*y+5*y+4*y*y+5*y;
#defineM(y*y+5*y)
s=3*(y*y+5*y)+4*(y*y+5*y);
#definePI=3.14/***WRONG***/… L=2*PI*r;/*becomesL=2*=3.14*r;*/#defineN100;/***WRONG***/ …sum=N+5;/*becomessum=100;+5;*/Advantages:easiertoread.
easiertomodify.
GeneralPropertiesofMacrosDirectivesalwaysbeginwiththe‘#’(pound/hash)symbol.
Whenmacrosareusedasconstants,Cprogrammerscustomarilycapitalizealllettersintheirnames.Thereplacementlistsinmacrodefinitionsoftenrequireparenthesesinordertoavoidunexpectedresults.Thereisnosemicolon‘;’attheendofamacrodefinition.Amacrodefinitionnormallyremainsineffectuntiltheendofthefileinwhichitappears.The#undefdirectiveremovesthecurrentdefinitionofidentifier.
#definePI3.14159intmain(){
……}#undefPIintf1(){....}MacroDefinitions2.ParameterizedMacrosDefinitionofaparameterizedmacro
#defineidentifier(x1,x2,…,xn)replacement-list
x1,x2,…,xnareidentifiers(themacro’sparameters).MacroDefinitionsMacroDefinitions#definePI3.14#defineS(r)PI*(r)*(r)area=S(a+b);
area=3.14*(a+b)*(a+b);#defineS(r)PI*r*rarea=S(a+b);
area=3.14*a+b*a+b;
FileInclusion#includedirectiveThe#include
directivetellsthepreprocessortoinsertthecontentsofaspecifiedfile.#include<filename>#include"filename"
Typicalrulesforlocatingheaderfiles:#include
<filename>:Searchthedirectory(ordirectories)inwhichsystemheaderfilesreside.#include
"filename":Searchthecurrentdirectory,thensearchthedirectory(ordirectories)inwhichsystemheaderfilesreside.#include<math.h>AssumingthatthecompilersystemINCLUDEpathis"C:\CODEBOLCKS\MinGW\include",thecompilerwillsearchmath.hinthisdirectoryC:\CODEBOLCKS\MinGW\include#include"user.h“Assumingthattheuserpathis"D:\myhomework",thecompilerwillsearchthesystemINCLUDEpathoruserpathtofindtheheaderfile.D:\
myhomework
orC:\CODEBOLCKS\MinGW\include
Thefilenameinan#include
directivemayincludeinformationthathelpslocatethefile,suchasadirectorypathordrivespecifier: #include"c:\myproject\myhead.h“
SharingMacroDefinitionsandTypeDefinitionsSavestime.Makestheprogrameasiertomodify.Avoidsinconsistenciescausedbysourcefilescontainingdifferentdefinitionsofthesamemacroortype.
SharingVariableDeclarationsToshareafunctionamongfiles,weputitsdefinitioninonesourcefile,thenputdeclarationsinotherfilesthatneedtocallthefunction.Sharinganexternalvariableis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公室方案课件
- 办公软件初学课件
- 表格的目录课件
- 办公礼仪培训制作课件
- 2026年机场叉车模拟试卷及答案
- 2026年福建省驾校考试科目一手动挡模拟试题(含答案)
- 2026年山东省滨州市事业单位经济类理论考试模拟试卷及答案
- 2026年外国文学下模拟试卷带答案
- 2026年安全消防环保模拟试题(含答案)
- 2026年集团法务模拟试卷及参考答案
- 《中国教育史》孙培青1
- 雨课堂学堂云在线《经典与思考-人文清华大师面对面 》单元测试考核答案
- T-ACRI 0049-2025 锂离子电池正极材料烧结用匣钵
- e基建2.0成功施工方案
- 草原有害生物防治项目施工方案
- 透析患者病历汇报
- 贵州家乡介绍课件
- 2025榆林能源集团有限公司招聘工作人员(473人)笔试参考题库附带答案详解
- 景区开发战略框架协议书
- 互联网骨干直联点监测系统项目需求
- 基于HAL库的STM32F1开发实践教程-课件全套 第1-11章 GPIO输出-云平台接入(485、CAN、云平台)
评论
0/150
提交评论