"); //-->
(1)、混淆你的概念,让你无法分析出几个物理过程,或某个物理过程遵循的那条物理定律;
(2)、存在高次方程,列出方程也解不出。而后者已经是数学的范畴了,所以说,最难之处还在于掌握清晰的概念;
程序设计也是如此,如果概念很清晰,那基本上没什么难题(会难在数学上,比如算法的选择、时间空间与效率的取舍、稳定与资源的平衡上)。但是,要掌握清晰的概念也没那么容易。比如下面这个例子,看看你有没有很清晰透彻的认识。
//a.h(请针对上面3道题仔细考虑10分钟,莫要着急看下面的解释。:) 考虑的越多,下面理解的就越深。)
好了,时间到!请忘掉上面的3道题,以及对这三道题引发出的你的想法,然后再听我慢慢道来。正确的概念是:从C编译器角度看,.h和.c皆是浮云,就是改名为.txt、.doc也没有大的分别。换句话说,就是.h和.c没啥必然联系。.h中一般放的是同名.c文件中定义的变量、数组、函数的声明,需要让.c外部使用的声明。这个声明有啥用?只是让需要用这些声明的地方方便引用。因为 #i nclude "xx.h" 这个宏其实际意思就是把当前这一行删掉,把 xx.h 中的内容原封不动的插入在当前行的位置。由于想写这些函数声明的地方非常多(每一个调用 xx.c 中函数的地方,都要在使用前声明一下子),所以用 #i nclude "xx.h" 这个宏就简化了许多行代码——让预处理器自己替换好了。也就是说,xx.h 其实只是让需要写 xx.c 中函数声明的地方调用(可以少写几行字),至于 include 这个 .h 文件是谁,是 .h 还是 .c,还是与这个 .h 同名的 .c,都没有任何必然关系。
这样你可能会说:啊?那我平时只想调用 xx.c 中的某个函数,却 include了 xx.h 文件,岂不是宏替换后出现了很多无用的声明?没错,确实引入了很多垃圾 ,但是它却省了你不少笔墨,并且整个版面也看起来清爽的多。鱼与熊掌不可得兼,就是这个道理。反正多些声明(.h一般只用来放声明,而放不定义,参见拙著“过马路,左右看”)也无害处,又不会影响编译,何乐而不为呢?
翻回头再看上面的3个问题,很好解答了吧?
搞清楚语法和概念说易也易,说难也难。窍门有三点:
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
有一家公司急需湿度传感器
Samba_24学时教程7
TCP IP 源代码,请排队!!
英特尔再度推迟280亿美元芯片厂建设,恐动摇市场信心
碳化硅与硅:为什么 SiC 是电力电子的未来
S-HS固态继电器原理与应用
加速电路设计的软件
Samba_24学时教程6
印度首个自研芯片将在今年投产
电路设计常用软件介绍
25Hz正弦波振荡电路
Samba_24学时教程8
罗德与施瓦茨公司最新示波器产品演示
2025年需要考虑的6大实时嵌入式技术
赛灵思全新7系列FPGA产品实验室测试
外媒评苹果AI生死赌局:冲不过就出局!
Samba_24学时教程9
嵌入式系统设计的关键原则:提供高性能、可靠的解决方案
锁相环正弦波振荡器
2.34kHz正弦波振荡电路
中国ERP第一案:原告获得200万 (转载)(转寄)
PI 推出无闪烁TRIAC调光的产品
硬件-软件协同设计如何彻底改变嵌入式系统
LinkSwitch-PH与LinkSwitch-PL可为LED照明提供最优化解决方案
赛灵思全新7系列FPGA
1―50kHz的正弦波振荡电路
SkyWater将购买英飞凌美国得州奥斯汀8英寸晶圆厂Fab 25
三菱电机:将在中国构建工业机器人完整供应链
电池管理系统如何计算和监控电池寿命
稳定的正弦波振荡器