对一线研发之声的提议:大家做一套编程模板规范吧?

[复制链接]
2987|13
 楼主| z_no1 发表于 2013-7-28 18:00 | 显示全部楼层 |阅读模式
全局变量放哪,局部变量放哪,我现在是UCOS风格,也不是很好,每个C下面都有好多H。
大家都提出自己的模板,打擂台,择优普及。
chenbb8 发表于 2013-7-28 18:53 | 显示全部楼层
本帖最后由 chenbb8 于 2013-7-28 18:55 编辑

参考:http://hi.baidu.com/hyper99/item/6ecd2108f73bc2f2a1103430
将对外的函数和变量分为两种,一种是层内部使用的,一种是用户可视的。
类比于UCOS中带下划线的函数和不带下划线的函数,但是ucos将所有需要被外部引用的函数,不管是带下划线的还是不带下划线的都放到了一个头文件里,
这样用户会看到内部的细节。
现在只讨论函数,变量的做法一样。
比如A层内,有A1.C提供的对外的函数AInit(),AInit()的声明放在A.H内,还有相关配置开关也在这里
A2.C需要A3.C的Foo1()的支持,但是不需要被层外调用,所以放在A_PKG.H里
而A1.C内还有一个函数Foo2()是只在A1.C内部调用的,在定义函数的时候加static声明,这样就算用户蛋疼要看源文件,也能一下子就知道这玩意是内部使用的。
A_PKG.H包含A.H,A层内所有源文件包含A_PKG.H,层外使用A.H。

另外傻孩子还有一个封装的方法不过是X莫论坛的,只提供tid了:5505499
原野之狼 发表于 2013-7-28 19:29 | 显示全部楼层
参考linux即可
chenbb8 发表于 2013-7-28 22:30 | 显示全部楼层
原野之狼 发表于 2013-7-28 19:29
参考linux即可

还没用过linux,更别谈读源码了~
不过,这么大的软件肯定很注重头文件的包含结构。要不然改一个头文件就要编译所有的源文件就糟糕了。
如果是我上面说到的方法的话,面对这种大工程,应该是针对每个模块来做一个接口头文件和一个内部的封装头文件吧,改动内部的封装头文件的时候只影响模块内的源文件。
 楼主| z_no1 发表于 2013-7-28 22:33 | 显示全部楼层
写MCU的看LINUX还是少数啊,能整理一个么?
499734424 发表于 2013-7-29 10:55 | 显示全部楼层
关注一下  
wangflw 发表于 2013-7-29 16:50 | 显示全部楼层
mark,这个关系到全局变量,搞不好就会有重复定义或者缺少声明。以前老是出这种问题
chenbb8 发表于 2013-7-29 20:26 | 显示全部楼层
wangflw 发表于 2013-7-29 16:50
mark,这个关系到全局变量,搞不好就会有重复定义或者缺少声明。以前老是出这种问题 ...

不要将变量放到头文件中,头文件中只要放声明(extern)就好。
另外还要加入头文件的编译开关
wangflw 发表于 2013-7-30 09:39 | 显示全部楼层
chenbb8 发表于 2013-7-29 20:26
不要将变量放到头文件中,头文件中只要放声明(extern)就好。
另外还要加入头文件的编译开关 ...

嗯,是的。头文件都是要包含一个条件编译
#ifndef XXX
...
#endif
这样会避免重复声明。
刚学的时候没搞懂这块,把变量定义在头文件,又没有加条件编译,结果导致N多的变量重复定义
原野之狼 发表于 2013-7-30 12:30 | 显示全部楼层
wangflw 发表于 2013-7-30 09:39
嗯,是的。头文件都是要包含一个条件编译
#ifndef XXX
...

加了条件编译就不会报错了么  你还是再验证一次看看
refee 发表于 2013-7-30 17:31 | 显示全部楼层
其实多看看编程规范方面的书就好了……
无痕小子 发表于 2013-7-30 20:52 | 显示全部楼层
我的程序拿出来被群里说是人神共愤啊。。于是乎我编程这样了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
l50211 发表于 2013-8-6 11:50 | 显示全部楼层
现在有结果了吗?
hawk2003454 发表于 2013-8-6 15:22 | 显示全部楼层
这个需要专家出面抛砖引玉
您需要登录后才可以回帖 登录 | 注册

本版积分规则

225

主题

2660

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部
0