谈头文件的嵌套

来源:互联网 发布:全民淘宝客 编辑:程序博客网 时间:2024/05/16 01:49

       接触STM32已有一段时间了,但是真正学到的似乎不是很多,按照普遍的学习方法——先学习硬件配置,再根据提供的开发指南和官方的datasheet熟悉常用的内部结构和编程技巧,到亲自动手操作,模仿、验证、尝试……这个过程真的是相当耗时间,平时看书精力一般都是很充沛的,可是查阅开发指南和数据手册着实让人有点傻到打瞌睡。

        写跑马灯的程序,在文件内嵌的时候有时候会出现让人哭笑不得的情况,也许是因为平时都没怎么注意吧。

        建好自己的工程框架,这个过程其实很简单,就是老老实实按照大神给出的方法做,一般不会出现太大的问题,核心是自己建属于自己的 led.c 和 led .h 文件,前者用于写应用函数的定义,后者用于自定义函数的声明,这个方法很有意义。其实就是个磨刀的过程,写一大堆的代码放在 main.c 文件里面,当工程比较大的时候,这个方法的优势就体现出来了,比方说,当我想要修改某个自定义函数的功能时,不至于从头到尾去扫描整个肥胖的 main.c 文件 ,看到眼花缭乱找得焦头烂额,当然开发平台提供了函数查找的功能,但是在实际编代码的时候,我可不愿意为了修改某个代码段往搜索框里面敲一串字母,但是一旦把自定义函数的定义和声明分门别类放在不同文件里面,事情就简单多了,至少我知道要在哪个垃圾堆里找到我要用的废品,而且这些废品都已经打包好了,很容易找到。main.c 里面要什么,我就调用什么。

        说完了编程习惯,问题就来了,既然自己定义函数,那么要实现需要的功能,肯定要首先把外交对象提出来,比方说,我用到了stm32f10x.h 里面写好了的某个函数,我就要把包含它的这个头文件嵌进来,一旦养成了这种好吃懒做的习惯,肯定会出问题的,当我在编写一个比较大的工程时,自定义的文件好几个,这里嵌套一个,那里嵌套一个……结果一编译代码就出错,原因就在于,一个文件嵌套了另一个文件,然后另一个文件也嵌套了同一个文件,第三者的出现一定不是什么好兆头,会出乱子的。。。多么痛的领悟。。。

        重复的错综复杂的嵌套关系拉开了一张巨大的网,编译器在缕清思路的过程中无所适从、手忙脚乱,它找不到出路,只好告诉你——你做错了!编程这么严肃的问题你怎么能乱来!!!

这些莫名其妙的代码和人类的世界其实差不多,需要你介入其中给出一定的规则,颁布你的律法。

   单片机程序开发过程中, 经常会遇到一种情况, 当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为:


#ifdef 标识符
程序段 1
#else
程序段 2
#endif


它的作用是:当标识符已经被定义过(一般是用#define 命令定义) ,则对程序段 1 进行编译,
否则编译程序段 2。 其中#else 部分也可以没有,即:


#ifdef
程序段 1
#endif


不论是对于头文件的嵌套还是对于程序段的编写,都遵循这个规则,你已经用了,我就不用,你没有的,我就拿过来,保持所有权的唯一合法性,别人想要插一腿就得付出代价。


PS:北航人文与社会科学高等研究院教授秋风的文章中,提出了这样一种认识:不为天下先

BEGIN:

文章谈论中国人开放、学习、吸纳、再创造的特质,我觉得很有意思,所以拿出来分享一下。


    读到这篇文章其实我真的是不知道怎么说为好,原因就在于这个问题实在是太复杂、太纠结,呵呵

    秋老说的确实是事实。从我自己的经历来看,似乎很多都应证了这段话,首先说山寨问题吧,5年前,由于上学地点离家远,老妈在某个地方营业厅花了120元给我买了人生的第一部手机,便宜吧,羡慕吧。。。bingo!山寨的啦!那时候手机其实不是很普及呀,广大农村地区的平民、小资产阶级、知识分子等等一大批人,享受着廉价的山寨高科技带来的便利,从一定程度上来说,山寨为地方发展做出了不小的贡献。尤其像我这种生活在现代的古代社会的屌丝,想要拥有一部正儿八经的手机,那就真得好好放牛。。。聪明的中国人创造性地肢解、分析、模仿、应用先进的技术,创造了繁多的山寨产品,提前把丰富多彩的世界展示在占世界人口20%的人类面前,简直是前无古人后无来者。洪水般的made in China 占领了世界市场的高地,真心太屌!

    再谈大学生的创新创业项目。进入大学,尤其是理工科的孩子们,师兄师姐们肯定会告诉你,要想考研、找到好工作就一定要抓住机会跟着老师做项目做课题。其实我真的很伤心,至今我仍然不知道所谓的创新到底是什么,普遍的做法是在网上找相关的研究资料,然后根据需要加以应用,就好像搭积木一样,最后交上去的东西,也不见得有什么神奇的创新点在其中,反正别人没一模一样的就叫创新,甚至现在申请专利,好像只要有钱任性任性就会有专门从事专利申请工作的人士解决问题,一大批的高素质人才就这么逆流成河。其他的,我就不多说了。

    再谈学习各种知识。模仿,是大学生活必须深刻面对的,对我来说,算是一种困境吧。林子大了什么鸟都有,一大波的孩子做作业也赶上了时代的节奏,平时不怎么好好上课,交作业前拿来参考书、别人的作业一抄,学分一到手就好像打游戏过关斩将了,然后接着玩下一关。尤其让人气愤的是,做实验不再是研究意义的做实验,很多时候是为了应付差事,东摸摸西摸摸下课就溜了,为了那些该死的实验报告,孩子们也是蛮拼的蛮辛苦的到处抄,没有记录数据的不会处理的不会分析的,世界上总会有一种办法加以解决,饿死胆小的撑死胆大的。昨天,一个很要好的党员同学说要去XX纪念馆参观学习,一听脑海中就出现一幅画面:一大波的同志们扛着自己的高科技手机到处一阵乱拍,眉开眼笑地认认真真地学习学习,等到某一天自己想起来学到了什么,了解到了什么背后的故事似乎什么也不知道。只记得当初为了争取入党自己多么呕心沥血绞尽脑汁的到处查范文,抄得腰酸背痛手抽筋。好吧,我不是什么进步青年,但绝不是吃不着葡萄说葡萄酸,只记录事实,不发表评论。

    ……

    这是我自己的经历,着实无言以对。开放、学习、吸纳、再创造,这些都是很好的特质,就好像自己学习编程、学习各种工具和软件,这些早就有人研究,我们所需要的,不过就是站在比我们高大的巨人身上,去学习、吸纳、再创造,为不为天下先,从这个意义上来说,其实并无探讨价值。

我希望自己能学着摆脱各种条条框框的束缚,认真负责地对待自己的生活。我庆幸自己生活在这样一个多姿多彩的时代,年轻,想要学什么就可以学习什么,那些昂贵的软件、技术资料等等,几乎一切都可以免费获取(当然是为了学习之用)。

END BEGIN

    开放、学习、吸纳、再创造……

1 0