第一篇:C源文件要包含自己的头文件
引言:
我们经常在c工程中发现,源文件中要包含自己的头文件。一直以来,都不知道为什么这样做。现在,我知道了。
以前的认知:
我认为,.c文件没有必要包含自己的.h文件。.h文件包含.c文件中定义的函数和全局变量的声明,.h文件就是.c文件提供的对外接口文件。既然.h文件就是.c文件提供的对外接口文件,那么.c文件就没必要包含自己的.h文件了(.h文件是对外提供用的,对内又何必再包含进来呢)。
鉴于这样的理解,我对于工程中.c源文件包含自己的.h头文件很是不理解,不知道为什么要这样做。
现在对此的理解:
但是现在,我知道为什么要源文件包含自己的头文件了。
如下,一段书中的原话:
“如果希望让编译器检查声明的一致性, 一定要把全局声明放到头文件中。特别是, 永远不要把外部函数的原型(也就是函数声明)放到.c 文件中: 通常它与定义的一致性不能得到检查, 而矛盾的原型(也就是函数声明)比不用还糟糕。”
注意:外部函数的原型,就是外部函数的声明。
对这段话的理解:
为什么:“永远不要把外部函数的原型放到.c 文件中”
这个外部函数A指的是B.c文件之外定义的函数,B.c文件中需要使用外部函数A,就需要先对外部函数A声明(对外部函数的声明就是外部函数原型)。对这个外部函数A的声明,不能放在B.c文件里面来实现。
以实例说明:
① 假若工程中有2个源文件a.c和b.c;a.c的头文件为a.h,b.c的头文件为b.h。② a.c中定义了一个函数sum。
③ b.c要引用sum 这个函数。做法是:在b.c中声明sum这个函数。然后b.c就可以使用sum函数了。
这样的做法就是把外部函数sum的声明放到了b.c中来。然而,这样的做法很不妥。不妥的原因:sum是在a.c中定义的,而声明确是在b.c中,sum函数的定义和声明不是在同一个文件中的。定义和声明不在同一个文件中,编译的时候,编译器就不能对定义和声明的一致性进行检查。这样,如果sum的定义和声明不一致,编译器就无法检查出来(定义和声明不在同一个文件中),那么编译的时候不会报错,但是程序运行的时候就可能会出错。而这样的错误,查找起来又不是很容易。
鉴于此,才这样说:“永远不要把外部函数的原型放到.c 文件中”。
那如何才能让编译器检查定义和声明的一致性呢?
前面说,如果把外部函数的原型放到.c 文件中,编译器就无法检查声明和定义的一致性(声明和定义不在同一个文件中)。那么,要让编译器检查定义和声明的一致性呢,自然是把定义和声明放在同一个文件中,而如何实现把定义和声明放在同一个文件里呢?
答案:源文件定义的函数,在源文件对应的头文件中声明,然后源文件包含自己的头文件。这样定义和声明就放在同一个文件里了。
援引上述例子:a.c中定义了函数sum,而函数本质上是外部的,函数sum是可以被其它源文件调用的。那么,我们把sum函数的声明放在a.h中。然后a.c源文件还要包含自己的头文件,也就是a.h文件。而b.c文件要引用sum函数,就直接包含a.h文件就可以。
sum函数的定义在a.c中,声明是在a.h中,但是由于a.c包含了a.h,所以sum的定义和声明就是在同一个文件a.c中了。这样,编译器编译的时候,就能对sum函数定义和声明的一致性做检查,如果不一致,就会报错。
至于其他源文件引用这个外部函数sum,不再采用直接声明的方式,而是通过包含a.h头文件的方式。
这样,编译器检查了sum函数定义和声明的一致性没有报错,也就表明a.c中sum函数的定义和a.h中sum 函数的声明是一致的。那么其他源文件都是通过直接包含a.h,来使用函数sum,就也保证了sum函数声明和定义的一致性了。结论
c源文件要包含自己的头文件,目的就是让编译器检查定义和声明的一致性。
第二篇:头文件总结
C、传统 C++
#include
//设定插入点
#include
//字符处理
#include
//定义错误码
#include
//浮点数处理
#include
//文件输入/输出
#include
//参数化输入/输出
#include
//数据流输入/输出
#include
//定义各种数据类型最值常量
#include
//定义本地化函数
#include
//定义数学函数
#include
//定义输入/输出函数
#include
//定义杂项函数及内存分配函数
#include
//字符串处理
#include
//基于数组的输入/输出
#include
//定义关于时间的函数
#include
//宽字符处理及输入/输出
#include
//宽字符分类
//////////////////////////////////////////////////////////////////////////
标准 C++(同上的不再注释)
#include
//STL 通用算法
#include
//STL 位集容器
#include
//复数类
#include
#include
//STL 双端队列容器
#include
//异常处理类
#include
#include
//STL 定义运算函数(代替运算符)
#include
#include
//STL 线性列表容器
#include
//STL 映射容器
#include
#include
//基本输入/输出支持
#include
//输入/输出系统使用的前置声明
#include
#include
//基本输入流
#include
//基本输出流
#include
//STL 队列容器
#include
//STL 集合容器
#include
//基于字符串的流
#include
//STL 堆栈容器
#include
//标准异常类
#include
//底层输入/输出支持
#include
//字符串类
#include
//STL 通用模板类
#include
//STL 动态数组容器
#include
C++ 增加
#include
//复数处理
#include
//浮点环境
#include
#include
//布尔环境
#include
//整型环境
#include
//通用类型数学宏
第三篇:部门工作总结源文件
启划部工作总结
一、思想总结:在思想方面,对“全心全意为广大同学服务”这句话有了更深的理解。我从不因为校社联的活动而觉得耽误自己的时间苦恼,每次尽管可能很小的活动,收获的却无法用量来衡量的。当自己真正的融入每次活动时,才会发现,收获的永远要比付出的多的多。也正是通过一次又一次的想不通到想通,不知不觉中自己的思想素质已经有很大的提高。
二、学习上:在学习和生活上。也因为进入校社联而发生改变。从无所事事的状态变的紧张忙碌。也是正因为这样,促进了我的学习意识,变被动学习为主动学习。同时学会了合理安排自己的时间。让自己的生活充实而又丰富。
三、工作上的收获:由于刚开始由于工作方式的不佳和经验的不足,给学长和学姐们造成不少的麻烦。我也想过要放弃,但为了珍惜这次难得的机会,不让自己的学生活枯涩无味,同时也可以为同学们服务,增强自己的责任感。我决定坚持下来,因为这一学期我收获了部门之间成员的友谊和经验。
四、对未来发展的规划:过了这一学期,我们启划部成长了很多,同学之间的感情也增加了不少,我相信到了下学期,我们会更加成熟。最后,感谢大家的陪伴以及部长们的教导!
第四篇:要严格要求自己
原文 一方面
按照这次民主生活会的要求,结合贯彻落实科学发展观的实际情况,进行了认真反思,梳理出以下几个方面的差距和不足,请同志们批评帮助。
1、开拓创新不够。一是对发展规划关注少。过去,我比较重视发展规划,亲自参与、亲自谋划、亲自研究,也聘请了国内知名设计院校对a市发展规划进行设计。但由于即将撤市变区,a市的一些规划将由o市市统一规划。因此,我主观地认为即便规划了也没有用处,就对这方面的关注有所降低,在发展的谋划上有所松懈。特别是o市市提出长东北开发开放先导区战略后,没有及时把a市的发展与之结合起来,没能站在a市融入大o市的高度来谋划a市、规划a市。在具体的对接上,只抓了a市经济开发区与o市玉米工业园的基础设施对接,与o市市的交通对接、产业对接等方面做得还不够好。二是破解困局胆子小。目前,改制是困扰地方经济发展的一个大问题,一些未改制企业的企业和事业单位已成为地方经济的一大包袱。在这个问题上,虽然进行了一些探索,做了一些研究,心里也有了一些想法,但由于存在求稳怕乱心理,怕引起干部职工上访,所以一拖再拖迟迟不敢动手。特别是今年比较特殊,既是奥运年,要召开十七届三中全会,又是改革开放30周年,因此,工作上多多少少地存在一些不求有功但求无过的思想,考虑稳定的问题多了,考虑发展和改革的问题少了。三是遇事集体研究少。在一些大的决策问题上能够按照民主集中制的要求办事,能够与班子成员进行认真研究讨论,但在其它问题上遇事习惯于自己琢磨,与班子成员研究探讨得少,工作交流意见交流得少。现在想来,在一些问题上多与班子成员研究,集聚力量,集思广益,才能更好地促进发展,一个人瞎琢磨总是不如集体的智慧。
2、大胆科学决策不够。一是决策不够严谨,想当然的问题还不同程度存在。在一些自认为熟悉的工作领域上,遇事习惯拍脑门,拍板快,决策缺乏科学论证,往往凭老经验主观臆断,与落实科学发展观的要求不相适应。二是在县域发展上偏重于西部乡镇,对东部乡镇重视不够。近年来,由于实施“ ”战略和邻近o市的地缘优势,我对西部乡镇关注得多、研究得多、帮助得多,西部三镇也得到了较快发展,综合经济实力得到很大提升。镇、街道、镇也因落位了一些大项目而发展较好,但东部大多数乡镇仍处于相对落后地位。目前,a市东西部乡镇发展不平衡问题已经比较突出,而且还可能差距进一步拉大。三是重工业基础投资,轻社会事业投入、轻农业农村工作。科学发展观要求,必须统筹经济社会发展,既要注重经济增长,也要抓好社会事业发展,这方面我做得还不够到位。虽然我们在年初实施了74项民生行动计划,但工作中把热情和主要精力基本都用在了抓工业、抓项目、抓招商引资上,对社会事业和民生工作调度少、照顾少、过问少。在农业农村工作方面也是如此,认为农业再发展、再增长、再提高,粮食也增产不到哪去,对财政的贡献也有限,只要粮食保持在22亿斤阶段水平就可以了。实际上,我市农业整体发展水平还相对落后,农民持续增收的机制还不够完善,农业机械化程度不高,还不能完全适应现代农业发展的需要等等。我们必须按照十七届三中全会要求,在抓好工业经济增长的同时,切实抓好农业农村工作,实现城乡统筹发展,否则势必影响到a市的全面进步和可持续发展。
3、抓开发开放力度不够。深入贯彻落实科学发展观,要求我们继续深化改革开放,全面提高开放水平。但我对开发开放的认识还不够深刻、不够到位。一是对开发开放的认识还比较片面。对开发开放的认识仅局限于项目引进上,在加强对外合作与交流上认识得还不深,在拓展开发开放的深度和广度上还存在相当大的差距。我提出过要抓住沿海发达地区产业转移的契机,盯住新、高、大项目,不断拓展招商渠道和领域。但在加强同长三角、珠三角等经济发达地区官方及企业的对话与沟通,促进区域间经济、文化、社会及人员的交流与协作等方面做得还很少,忽视了经济发达地区软实力的引进。二是城市建设上缺乏开放性思维。在城市建设上,我提出高起点规划、高标准建设、高水平管理,应该说具有了“建开放城”的意识,但在“开放建城”的理念上仍有待提高。在城市建设资金方面,虽然鼓励在经营思路、经营方式、经营渠道上多动脑筋、多想办法,但在具体办法的落实上、在对外宣传上行动不多,a市的城市建设对外推介得也不够好,甚至o市地区对a市城市建设都知之甚少,与宽城区等在网络、电视及《o市日报》等媒体大张旗鼓地宣传相比,a市在城市建设的开放度上还有很大差距,还远远没有做到
面向社会开放、面向域外市场开放。
4、抓工作落实不够。工作中,我能做到务实干事,对自己要求也比较严格,但在对下抓落实上还有待提高。一是对部署的工作调度少,习惯年终算帐。一方面认为a市的干部是过得硬的,响鼓不用重槌,太过依赖他们的自觉性;另一方面,认为经过几年来对各项工作责任制的健全和完善,a市的考评制度能够发挥约束和督查作用。因此,一定程度上放松了工作调度,造成了阶段性工作督促检查得不够,有些工作虎头蛇尾。二是教育干部的方法比较单一。我过去一直认为,只要干部真心干事,就不要对他们苛求太多,实际上动真格的少。尤其是在党风廉政建设方面,虽然能够以身作则,但在对全市党员领导干部的监督、提醒、告诫方面,抓的力度还不够大,要求的还不够严格。现在看来,那种蜻蜓点水式地教育是不对的,对干部的教育是一件大事,应该非常严肃地对待,这既是对干部的负责,也是对组织的负责。
存在这些问题的根源,说到底还是人生观的问题,学习和素质的问题。一是人生观的认识问题。缺少强烈的事业心和责任感,存在私心杂念,工作中考虑个人得失多了,不能为了发展、为了事业抛弃个人的荣辱。二是存在以干代学思想。认为自己参加工作几十年了,在基层时间很多,做工作是轻车熟路,总是凭老经验、老本事干事。三是存在船到码头车到站思想。年龄大了之后也感到越来越力不从心了,在学习上对自己要求没有以前严格了,不愿意学习了。对工作的压力感到越来越大,尤其是对省市提出的发展目标感到很不适应。总是担心自己不能尽快解决学习问题,素质不能再提高,思路不
能再解放,就会贻误a市的事业。
针对自身存在的问题,下一步我考虑要重点从以下四个方面加以改进和提高。
一是进一步在加强学习上用心思。把学习作为提高素质、促进工作的根本手段和生活常态,养成勤学、好学的习惯,通过学习,深入掌握和领会科学发展观的科学内涵和精神实质。坚持学习与实践相结合,加强调查研究,通过研究经济规律,提高应对金融危机和驾驭经济发展的能力,用科学发展观指导发展、引领发展。
二是进一步在解放思想上求实效。坚持以科学发展观为指导,从发展思路的谋划、奋斗目标的制定、具体措施的实施等多方面解放思想,做到敢于创新、敢于突破、敢于担风险,以创造性的思维和实践推动a市平稳较快发展。特别是要抓住国家和省市扩大内需、促进增长的有利时机,真正把相关政策用好、用活,积极争取资金快上项目,切实解决影响a市发展的资金、项目、人才、市场等方面的制约难题,不断加快发展步伐。
三是进一步在改进工作作风下功夫。把抓落实作为工作常态,增强指导工作的针对性,下功夫把问题分析得深一些、透一些,把措施研究的具体一些、实在一些,特别是要把主要精力用在加快发展、改善民生、建好城市、促进和谐的大局上,用在“一城两区”建设这个工作重心上,推动各项工作落到实处、取得实效。
四是进一步在抓好廉政建设上叫真劲。不断加强党性修养,时刻严格要求自己。在管好自己的同时,履行好“一岗双责”,全力抓好反腐倡廉建设,坚持向软环境要效益,为加快发展营造风清气正的环境。
以上是对自身建设中存在缺点和不足的自我剖析,不妥之处恳请领导和同志们批评指正。
要在加强学习、提升境界上做表率。要把学习和实践科学发展观作为当前和今后一个时期的重要政治任务,精心组织、统筹安排,务求实效。常委班子一定要带头学习,在武装头脑、查摆问题、提升境界上下功夫,更加完整准确全面地理解科学发展观,努力成为领导科学发展的行家里手。要按照科学发展观的要求,深入开展解放思想大讨论活动,靠解放思想破解难题、打开思路、找到出路,切实解决好“敢想敢干”和“会干干好”的问题,进一步提高落实科学发展观的自觉性。要坚持学用结合,突出实践特色,更好地把中央政策、外地经验和芝罘区情结合起来,着力解决影响和制约科学发展的突出问题,着力构建充满活力、富有效率、更加开放、有利于科学发展的体制机制,使经济社会发展真正步入科学发展的轨道,为建设“经济文化强省”和“文明富庶新烟台”做出更大贡献。
(二)要在强化责任、狠抓执行上做表率。抓好落实是领导干部的重要职责,强化责任是抓好落实的内在要求。常委一班人无论分工哪一方面,都要自觉围绕区委、区政府的总体部署,从一件件具体的工作入手,高度负责,认真执行,形成推进落实的整体合力。只要是决定了的事情,部署了的工作,就要坚定不移地抓下去,一抓到底,抓出成效。当前要突出抓好城市经济、服务业和财源建设等15项事关全区工作全局的重点工作。要加快重点项目、重大工程建设,分包领导要对在建、在谈项目亲自过问、亲自调度,协调解决项目建设中遇到的问题,加快项目进度。要以增收节支为重点,强化地方财源建设,深挖各个方面的税源潜力,培育纳税大户,壮大地方财力,提高发展的质量和效益。要抓住“五区融合”的有利契机,突出抓好南部新城、大南山、夹河河滨“一城一山一河”的建设开发,加快中心城区建设全面发展。要把奥运安保工作紧紧抓在手上、放在心上,认真履行职责,确保不出任何问题。
要在转变作风、真抓实干上做表率。加强作风建设,领导干部是主体,主要领导是重点。下步要继续深入开展“作风建设年”活动,着重倡导以下几种风气:一要倡导争先立志气。要对当前复杂形势有一个清醒的认识,增强紧迫感和危机意识,瞄准先进地区,树立更高的目标,在全市、全省乃至全国的大格局中谋划和定位,在竞争中进位发展,以对事业永不满足、不懈追求的思想境界,推动各项工作再上新台阶。二要倡导拼搏扬锐气。要面对机遇敢于拼搏、面对艰险敢于探索、面对竞争敢于超越,始终满怀激情地干工作。大力发扬“两路”建设、幸福区片改造、北马路拓宽改造动迁工作中体现出来的“芝罘精神”,不断总结、提炼、升华和实践新的工作理念,更好地指导下步工作。三要倡导团结聚士气。要自觉维护团结,坚持民主集中制原则,对重大问题、重要工作集体研究决定,广泛听取各方面意见,保证基层和群众的意见能及时反映到区委来。要完善区委议事决策机制,发挥好区委常委会和全委会的作用,完善集体领导下的个人分工负责制,提高常委工作效率。四要倡导干事树正气。要带头转变作风,少说多做,埋头苦干,多做抓基层、打基础、得民心、利长远、促和谐的事,努力创造经得起群众、实践和历史检验的实绩。特别是在当前严峻复杂的经济形势下,更要带头深入基层、深入企业、深入实际,积极主动地到困难多的地方去攻坚克难,到群众意见多的地方去化解矛盾,更加珍惜、把握好当前来之不易的发展局面。
要在以民为本、勤政为民上做表率。每位领导同志要始终怀着对群众的深厚感情开展工作,把关注民生作为最大的政治,把改善民生作为最大的政绩,多思富民之策,多解群众之忧,眼睛向下,多办实事,努力用我们的辛勤工作换取群众的幸福生活,让改革发展成果惠及广大人民群众。今年全区群众工作会议出台了23项惠民措施,最近市委、市政府又提出要在就业、住房、物价、医疗和困难群体生活保障等五个方面办好新的20件惠民实事,各常委要按照分工,认真抓好落实,确保每项工作都办到老百姓的心坎上。要在“心连心”、“面对面”、“实打实”做好群众工作上下功夫,把深入群众、联系群众、服务群众上升到制度层面,深入开展“民情日”、“区委书记、区长大接访”活动,扎实做好“蹲点、包居、帮困”等各项工作。要加快群众工作体系和平台建设,确保区群众接待中心10月份投入使用,真正把中心打造成理顺情绪、拉近距离、共促和谐的群众之家。
要在严于律己、清正廉洁上做表率。要严格要求自己,正确对待权力和名利,带头清廉从政、清白做人,切实维护好自身形象、发挥好表率作用。思想上要过得硬,常怀律己之心,牢固树立正确的世界观、人生观、价值观和权力观、地位观、利益观,切实做到自重、自省、自警、自励,筑牢拒腐防变的思想道德防线。行为上要做得正,管好自己,约束好亲属和身边工作人员,认真执行廉洁自律的各项规定,把好“工作圈”、“生活圈”、“社交圈”、“娱乐圈”,从小事、小节、小处规范自己的行为。执行上要抓到位,要严格执行党风廉政建设责任制,坚持原则,敢抓敢管,一级抓一级,一级带一级,承担起党风廉政建设的领导责任,,加强对各级干部的教育、管理和监督,通过创新制度管好人、办好事、用好权,筑牢防线,切实做到既能干事,又不出事。李大伦、曾锦春等腐败案给我一生上了极深刻的一课 李大伦、曾锦春等人案发后,我感到非常震惊。应该说,自己身边发生的腐败案件,给我的震撼比电视上看到、报刊上读到、文件中传达的要大得多,对我的一生特别是为官从政的行为取向将产生重大的影响。古人说:“见贤思齐,见不贤而内自省也。”从李大伦、曾锦春等人的腐败案中,我认为,自己要吸取的经验教训主要有下面几个方面:
1、人生要奋斗,但要知足,始终守住底线。作为一个领导干部,固然要在思想上先人一步,作风上优人一等,工作上高人一筹,但首先必须恪守以“公”、“廉”为核心的行为底线。对于国家法律、法规、规章所设的“高压线”,决不能触及。有一位专门研究反腐败问题的专家曾感叹说:很多贪污腐败的干部都有一个苦难的童年,奋斗的青年,上升的中年,最后都有一个悲惨的晚年。造成这个结局的原因,就在于没有守住党纪国法这条底线。在这方面,李大伦、曾锦春等人的教训太深刻了!人生而有欲,正当的、合理的欲望是生命和事业的动力,但邪恶的、卑劣的欲望则是堕落犯罪的根源。“贪如火,不遏则燎原;欲如水,不遏则滔天。”欲望无度,贪得无厌,无视党纪国法,最终必然走上毁灭自己的不归路。在这方面,自己一定要警钟长鸣,像洪元书记要求的那样,做到“做官知足、干事知不足、学习不知足”。
2、人生要追求,但信念不能动摇,始终保持政治上的清醒坚定。政治信念坚定不坚定,是一个党员领导干部的人生大节。理想的滑坡是最致命的滑坡,信念的动摇是最危险的动摇。理想信念是思想和行动的“总开关”。“总开关”失灵了,各种腐朽思想就会乘虚而入。近些年来暴露的一些党员干部腐败案,都无一例外地印证了这个规律。客观地说,大多数蜕化变质的领导干部,最初都有正确的理想信念。然而,随着职位的提升、权力的扩展,一些人经不起腐朽没落思想的侵蚀,直至彻底丧失理想信念,走上腐化堕落、违纪违法的道路。这个过程,非常值得自己深思。我觉得,作为一个党员干部,在任何时候任何情况下,都应当坚持理想信念不犹疑、不含糊、不动摇。要时刻以共产党员的标准严格要求,抵御各种腐朽落后思想文化的侵蚀,保持情趣健康,净化道德操守,增强拒腐防变的自觉性和坚定性。要牢记党的宗旨,坚持群众利益至上,把手中的权力用来为人民服务,以实际行动赢得群众的信任。
3、人生要自信,但不能忘乎所以,始终保持谦虚谨慎的作风。《吕氏春秋》讲:“存亡安危,勿求于外,务在自知。”意思是能否认识自己,直接关系到国家的存亡、个人的安危。作为一个领导干部,正确认识自己、始终保持谦虚谨慎是防止蜕化变质的关键。实际上,一个人不论多么聪明、多么能干,如果脱离了集体,不坚持民主集中制原则是很危险的。如果只看到个人的成绩,看不到岗位的需要和条件,看不到组织、集体、身边其他同志所起的作用,便会被成绩冲昏头脑,慢慢蜕化变质。一个人最难以战胜的是自己。只有正确认识自己,实事求是地评价自己,才有可能做好人、做好事、做好官,才有可能最终赢得组织的肯定和群众的认可。因此,自己无论何时何地,都要保持一种平和、理性的心态,保持谦虚谨慎、不骄不躁的作风,时刻摆正位置,不鄙人之短,不恃己之长,虚心向周围的同志学习,扎实工作,做出实绩。
第五篇:51头文件书写而方法
51单片机C语言学习笔记7:关于.c文件和.h文件
2009-09-15 09:55:43| 分类:| 标签: |举报 |字号大中小 订阅
1)h文件作用方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明;提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)。
2)h文件里应该有什么
常量,结构,类型定义,函数,变量申明。
3)h文件不应该有什么
变量定义, 函数定义。
4)extern问题
对于变量需要extern;
对于函数不需要因为函数的缺省状态是extern的.如果一个函数要改变为只在文件内可见,加static。
5)include包含问题
虽然申明和类型定义可以重复,不过推荐使用条件编译。
#ifndef _FILENAME_H,#define _FILENAME_H
……
#endif
6)应该在那儿包含h文件
在需要的地方.比如某个提供接口的h文件仅仅被1.c文件需要,那么就在1.c文件里包含。编写的程序一般会有.H文件和相对应的.C文件,.H文件是声明所用,.C文件是其函数实现部分。在调用时只要包含.H文件即可,我们没有听说过#include “delay.c”这类的程序,同时也不提倡使用这个形
式。
在delay.h文件中: //对调用的函数声明
#ifndef __DELAY_H__
#define __DELAY_H__
extern void Delayms(unsigned int n);
#endif
在delay.c文件中: //函数实现部分
#include
//for crystal 11.0592M
void Delayms(unsigned int n)
{
unsigned int i,j;
for(j=n;j>0;j--)
for(i=112;i>0;i--);
}
在主程序main.c中
#include
……
上述方法仍然要求每建立一个工程就需要把对应的头文件复制到工程的文件夹里,这样看来仍然是比较麻烦的,这时还有另外一中方法就是将做好的头文件放在一个文件夹中,然后将这个文件夹整体拷贝到..KEILC51INC下面,以后若需要使用某个头文件,就如使用KEIL自带的头文件一样方便了,在主函
数mani()之前有一句#include 就可以在main()中使用其中的函数了。
参考资料:
1)h文件里变量(函数)申明用不用extern
2).c文件和.h文件的概念与联系
3)过马路,左右看
4).c 和.h文件的不同
5)C51包含头文件方法
防止头文件重复包含的方法
第一条预处理命令是说,如果MAXMIN_H不为真,说明此文件没被包含过,此命令后面的源代码有效(相当于:‘如果大门没关,请您进来’);
第二条预处理命令把MAXMIN_H置为真(相当于请您把门锁插上,不让第二个人进来)。最后一条预处理命令是为了标出接受上述处理的源程序的范围(相当于您已经走到了后门)。假定有以下几个头文件及其包含关系为:
File1.h,file2.h,file3.h,file4.h,file5.h,main.cpp
那么:file3.h包含file1.h,file2.h,file4.h包含file1.h,file2.h,file5.h包含file3.h,file4.h。就会导致在file5中对file1和file2的反复包含,编译时就会报错。
解决方法1:
1:应用#ifndef
#define
#endif
即每个文件在定义时都写成以下情势(以file1.h为例):
#ifndef H_FILE1
#define H_FILE1
#include
#include
…..#endif
File3.h:
#ifndef H_FILE3
#define H_FILE3
#include
#include
#inlcude”file1.h”#include”file2.h”…..#endif
方法二:在每个文件的头部定义:#pragmaonce(用于解释本文件中的内容只应用一次)例:fiel1.h:
#pragmaonce#include
#pragmaonce#include