打印

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

[复制链接]
2027|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
z_no1|  楼主 | 2013-7-28 18:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
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,更别谈读源码了~
不过,这么大的软件肯定很注重头文件的包含结构。要不然改一个头文件就要编译所有的源文件就糟糕了。
如果是我上面说到的方法的话,面对这种大工程,应该是针对每个模块来做一个接口头文件和一个内部的封装头文件吧,改动内部的封装头文件的时候只影响模块内的源文件。

使用特权

评论回复
5
z_no1|  楼主 | 2013-7-28 22:33 | 只看该作者
写MCU的看LINUX还是少数啊,能整理一个么?

使用特权

评论回复
6
499734424| | 2013-7-29 10:55 | 只看该作者
关注一下  

使用特权

评论回复
7
wangflw| | 2013-7-29 16:50 | 只看该作者
mark,这个关系到全局变量,搞不好就会有重复定义或者缺少声明。以前老是出这种问题

使用特权

评论回复
8
chenbb8| | 2013-7-29 20:26 | 只看该作者
wangflw 发表于 2013-7-29 16:50
mark,这个关系到全局变量,搞不好就会有重复定义或者缺少声明。以前老是出这种问题 ...

不要将变量放到头文件中,头文件中只要放声明(extern)就好。
另外还要加入头文件的编译开关

使用特权

评论回复
9
wangflw| | 2013-7-30 09:39 | 只看该作者
chenbb8 发表于 2013-7-29 20:26
不要将变量放到头文件中,头文件中只要放声明(extern)就好。
另外还要加入头文件的编译开关 ...

嗯,是的。头文件都是要包含一个条件编译
#ifndef XXX
...
#endif
这样会避免重复声明。
刚学的时候没搞懂这块,把变量定义在头文件,又没有加条件编译,结果导致N多的变量重复定义

使用特权

评论回复
10
原野之狼| | 2013-7-30 12:30 | 只看该作者
wangflw 发表于 2013-7-30 09:39
嗯,是的。头文件都是要包含一个条件编译
#ifndef XXX
...

加了条件编译就不会报错了么  你还是再验证一次看看

使用特权

评论回复
11
refee| | 2013-7-30 17:31 | 只看该作者
其实多看看编程规范方面的书就好了……

使用特权

评论回复
12
无痕小子| | 2013-7-30 20:52 | 只看该作者
我的程序拿出来被群里说是人神共愤啊。。于是乎我编程这样了

1.jpg (22.12 KB )

1.jpg

使用特权

评论回复
13
l50211| | 2013-8-6 11:50 | 只看该作者
现在有结果了吗?

使用特权

评论回复
14
hawk2003454| | 2013-8-6 15:22 | 只看该作者
这个需要专家出面抛砖引玉

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

223

主题

2644

帖子

10

粉丝