下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 #ifndef#define#endif防止头文件重复包含, 你不是真的懂 - q1912017…

#ifndef#define#endif防止头文件重复包含, 你不是真的懂 - q191201771的专栏 - CSDN博客.mht.pdf

#ifndef#define#endif防止头文件重复包含, …

雪白乌鸭
2011-09-14 0人阅读 举报 0 0 暂无简介

简介:本文档为《#ifndef#define#endif防止头文件重复包含, 你不是真的懂 - q191201771的专栏 - CSDN博客.mhtpdf》,可适用于IT/计算机领域

欢迎zhonggydtx我的:空间博客网摘资源设CSDN首页资讯论坛博客下载搜索更多公告:CSDN社区招聘Net开发工程师运营专员UI设计师注:以下所用环境皆为VS由于本人编程能力及表达能力有限大家地方可以多看几遍有错误地方请一定指出这里首先说明下几点基础知识相信大部分人对于以下几点大部分都已经知道可以直接跳到最后部分看#ifndef#define#endif的真正作用预编译阶段把所有#include”***h“(“”与<>的区别这里就不说了)用内容来替换了所以之后就没有h了所有h的内容都已经包含进了需要它们的(注:该步个人认为是发生在预编译阶段)生成最后的exe文件是由编译、链接两步完成的编译是源代码生成obj二文件的过程注意一个源代码文件(指cpp,而非hh已经被包含进cpp一个obj文件在VS中单独编译一个obj的方法是选中该cpp文件ct章中以下所说的编译皆按该方法执行而非F,由于编译是独立的所以在两个译单元里是可以有重名的函数的例如acpp中可以有一个voidfun()bcp有一个voidfun()这点十分重要大家可以试一下并且理解清楚编译期间我们只要声明了的东西就能使用而无需它的定义声明可xtern在编译时是告诉该编译单元该变量的定义在别的编译单元里相当于声时定义在整个程序中有且仅有一份例如如下代码编译可通过但链viewplaincopytoclipboardprintexternintaexterndoublea错误a只能有一个类型externintaexternvoidfun(inta,intb)externvoidfun(inta,intb)externvoidfun(inta,intb,intc)函数重载voidfun()voidfun(inta)函数重载voidfun(){  #ifndef#define#endif防止头文件重复包含 你不是真的懂收藏q的专栏欢迎zhonggydtx!退出我的博客配置写文章文章管理全站空间博客好友相册留言用户操作留言发消息加彭仁亮ID:q共次访问排名万人关注者人。","qq":"彭仁亮的文章原创篇翻译篇转载篇评论篇订阅我的博客q的公告 记录学习C的点点滴滴写得太浅显你呵呵一声也就页码(W)whttp:blogcsdnnetqarchiveaspx}intmain(){a=fun(,)fun()fun()return}voidfun()我们从语法上来分析下#ifndef#define#endif(这点相信地球人都知道了viewplaincopytoclipboardprintah#ifndefAH#defineAHvoidfun()#endif预编译阶段当第一次执行该段代码(即#include"ah"参见第一条)时并没有宏定义AH所以会执行#defineAH以及voidfun()两条语句行该段代码时因为#ifndefAH为假就直接走到#endif后面也就等于该次#"ah"什么也没做了总结:好了下面就我们以上所学的知识来总结一下来纠正大家一直以来对#ifne#endif的误解当我们一个简单的project中有三个文件maincpp,acpp,ah而mainp分别包含了ah在编译阶段两个编译单元是都会分别包含ah的即使#ifndef#define#endif这也是为什么当ah被多个文件包含时我们不允定义变量及函数的原因因为在链接阶段会出现重定义。但是在ah中定义一量却是允许的因为static变量是模块性作用域就这个例子来说若我们taticintsss=那么maincpp与acpp使用的sss将为个独立的sss那么是否#ifndef#define#endif就没用了呢大家可以想想当我们ac个#include"ah"时如果我们使用了#ifndef#define#endif那么预编译阶包含一个ah中的内容到acpp中你也许会说有谁会傻到在acpp中写多e"ah"呢那么请考虑稍微复杂点的情况当我们maincpp中包含了ah和您有任何建议或意见欢迎提错误的地方也请您一定告诉文章分类疯言疯语存档年月()年月()年月()年月()年月()页码(W)whttp:blogcsdnnetqarchiveaspxah中我们又包含了bh那么如果我们使用了#ifndef#define#endif则ma包含一份bh发表于年月日::|评论()|举报|旧一篇:鸡尾酒排序woshigui发表于年月日::举报回复楼主写的很好终于明白了uruana发表于年月日::举报回复pcliuguangtao发表于年月日::举报回复呵呵自己也是不久前注意到预处理的作用woaifen发表于年月日::举报回复zhonggydtx发表于年月日::举报回复原来在于预处理上也有这么多讲究谢谢楼主啦发表评论表情:评论内容:用户名:zhonggydtx发表评论专区推荐内容PayPal助力移动支付应用Android应用换电视前名有效!热门招聘职位【更多】【北京平川嘉恒】团队Leader及端服务器端研发工程师页码(W)whttp:blogcsdnnetqarchiveaspx公司简介|招贤纳士|广告服务|银行汇款帐号|联系方式|版权声明|法律顾问|问题报告北京创新乐知信息技术有限公司版权所有, 京 ICP 证  号世纪乐知(北京)网络技术有限公司提供技术支持江苏乐知网络技术有限公司提供商务支持Email:webmastercsdnnetCopyright©,CSDNNET,AllRightsReserved【教程】笔记本安装MeeGo微软BI解决方案开发简介下载WindowsPhone中文培训包下载WindowsPhone开发工具<<>>【欢网科技】诚聘系统架构师、需析师、开发工程师【酷狗音乐】诚聘VC、服务端开师等职位页码(W)whttp:blogcsdnnetqarchiveaspx

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/4

#ifndef#define#endif防止头文件重复包含, 你不是真的懂 - q191201771的专栏 - CSDN博客.mht

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利