打印

一线研发之声 之 C程序的软件分层,看您躺枪没?

[复制链接]
楼主: sedatefire
手机看帖
扫描二维码
随时随地手机跟帖
121
xlsbz| | 2013-12-20 23:50 | 只看该作者 回帖奖励 |倒序浏览
sedatefire 发表于 2013-12-20 11:08
你可能还没明白我的意思,我的理念是:
从编译角度上,绝不给任何模块,透过extern篡改我模块内全局变量的 ...

关键是抵制也没用 因为似乎没什么好的办法

使用特权

评论回复
122
xiang2580| | 2013-12-21 15:35 | 只看该作者
sedatefire 发表于 2013-11-11 11:39
感觉一口血郁在心中,难过得很。

我追求的是,所有全局变量都是static的。

单片机一旦使用static就砖有RAM,如果完全不用extern,我想程序的思想要大大的升华才行。全局变量追求越少越好,但是没有,我实在有点做不到,除非一个文件完成所有程序,我更办不到。

使用特权

评论回复
123
xiang2580| | 2013-12-21 15:40 | 只看该作者
xlsbz 发表于 2013-12-19 20:39
外部C文件引用的全局变量 不都放  global.h 放哪?

难道放到单独C文件对应的  。h

。h,永远只声明不定义,那个C文件的定义的放那个文件的h文件声明。

使用特权

评论回复
评论
xlsbz 2013-12-21 17:10 回复TA
你这个答案打错地方了吧? 让我想起那个射靶的 搞到别人靶子上了 
124
xiao_huang| | 2013-12-21 19:07 | 只看该作者
过来看下

使用特权

评论回复
125
qin552011373| | 2013-12-23 09:53 | 只看该作者
软件写的一塌糊涂的人路过

使用特权

评论回复
126
dong00520| | 2013-12-23 10:07 | 只看该作者
看看了解

使用特权

评论回复
127
pinda_| | 2013-12-23 15:22 | 只看该作者
qq2941070113 发表于 2013-10-10 17:08
看了ST的DEMO和UCOS的代码. st的代码想 加减 哪个模块都是方便. ucos就不是那么方便.
谢谢楼主. ...

请问下,有没有类似的ST DEMO和UCOS,传个给我可否,中枪了。..

使用特权

评论回复
128
3htech| | 2013-12-25 10:34 | 只看该作者
分层思想不错,函数指针也很好,软件层次分明,结构清晰;但是,个人感觉这两者须建立在大容量RAM、FLash的高速处理器上。
在51核上用,就有点吃力了。但是我们可以通过减少层次数量来简化之。

总之,挺楼主。

使用特权

评论回复
129
sedatefire|  楼主 | 2013-12-25 22:40 | 只看该作者
3htech 发表于 2013-12-25 10:34
分层思想不错,函数指针也很好,软件层次分明,结构清晰;但是,个人感觉这两者须建立在大容量RAM、FLash的 ...

谢谢鼓励,不过51是玩不了太多指针的。
至少函数指针就玩不了,这个玩不了,架构就玩不了。

使用特权

评论回复
130
3htech| | 2013-12-26 10:25 | 只看该作者
sedatefire 发表于 2013-12-25 22:40
谢谢鼓励,不过51是玩不了太多指针的。
至少函数指针就玩不了,这个玩不了,架构就玩不了。 ...

在51上用函数指针没有任何问题。

使用特权

评论回复
131
cgm88888| | 2013-12-26 10:55 | 只看该作者
学习了

使用特权

评论回复
132
sedatefire|  楼主 | 2013-12-28 01:15 | 只看该作者
3htech 发表于 2013-12-26 10:25
在51上用函数指针没有任何问题。

要设置成可重入的? 使用xdata的栈吗
累死人哦

51可是静态栈分析的,函数指针本质上破坏了这种分析。
因为动态赋值过程中,编译器是不知道你要指向谁的。
无法实现分配好栈。
这个指针指向的所有函数,就都要求是递归可重入的。

使用特权

评论回复
133
3htech| | 2013-12-29 09:47 | 只看该作者
sedatefire 发表于 2013-12-28 01:15
要设置成可重入的? 使用xdata的栈吗
累死人哦

你说的对。
不过,在51上用指针加链表来实现复杂菜单操作是完全可行的,我现在就是这么用的。
函数都是可重入才行。

使用特权

评论回复
134
3htech| | 2013-12-29 09:49 | 只看该作者
sedatefire 发表于 2013-12-20 11:08
你可能还没明白我的意思,我的理念是:
从编译角度上,绝不给任何模块,透过extern篡改我模块内全局变量的 ...

如果是模块内部的专用的变量,则外界不应有修改它的权力。
如果非要有,那也必须是这个模块露出来的接口。
这个问题上,我和你的想法一样。

使用特权

评论回复
135
sedatefire|  楼主 | 2013-12-29 15:08 | 只看该作者
3htech 发表于 2013-12-29 09:49
如果是模块内部的专用的变量,则外界不应有修改它的权力。
如果非要有,那也必须是这个模块露出来的接口 ...

知音纳

使用特权

评论回复
评论
dong_abc 2013-12-29 16:05 回复TA
你的签名可以做个链接,点击就能打开。 
136
dong_abc| | 2013-12-29 16:04 | 只看该作者
楼主不是在写书吗? 等着你的新书啊~~~

使用特权

评论回复
137
3htech| | 2013-12-29 16:57 | 只看该作者
sedatefire 发表于 2013-12-28 01:15
要设置成可重入的? 使用xdata的栈吗
累死人哦

这要看指针的使用范围了。

使用特权

评论回复
138
xiang2580| | 2013-12-30 16:01 | 只看该作者
这帖子不错,LZ的编程思想追求,绝对是OK的,不要沉了。

使用特权

评论回复
139
sedatefire|  楼主 | 2013-12-31 21:19 | 只看该作者
xiang2580 发表于 2013-12-30 16:01
这帖子不错,LZ的编程思想追求,绝对是OK的,不要沉了。

谢谢

使用特权

评论回复
140
sedatefire|  楼主 | 2013-12-31 21:20 | 只看该作者
dong_abc 发表于 2013-12-29 16:04
楼主不是在写书吗? 等着你的新书啊~~~

一直在写,进度严重低估。
每天能够有一千字就很厉害了。

使用特权

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

本版积分规则