打印

这个真牛X

[复制链接]
楼主: dudongdao
手机看帖
扫描二维码
随时随地手机跟帖
21
HWM| | 2009-4-7 12:21 | 只看该作者 回帖奖励 |倒序浏览

若是这样,就别考虑什么“连续操作”,因为本来就不“连

使用特权

评论回复
22
computer00| | 2009-4-7 12:27 | 只看该作者

就是,变量类型都变了,又如何统一操作???

既然要统一操作,必然要是一样的结构。

一开始就跟你说了,不要依赖编译器,否则你的程序的可移植性会差,可读性也会很差,因为别人很难看明白,为啥可以这样操作?
因为你暗示了编译器应该要给连续声明的全局变量连续分配地址这么一个前提,但是事实上,C语言中并没有这样的规定。所以
读程序的人会更晕。

有时为了可移植性,连结构体都不能用,因为牵涉到大小端、对齐、填充等等问题。
而只用字节型数组,但是可读性会下降。

使用特权

评论回复
23
dudongdao|  楼主 | 2009-4-7 14:35 | 只看该作者

使用特权

评论回复
24
huangqi412| | 2009-4-7 15:25 | 只看该作者

额 为了大小端问题

在涉及双字节 4字节地方有#if #else #endif 条件编译 可以直接移植的.



使用特权

评论回复
25
一朝成名| | 2009-4-7 15:31 | 只看该作者

人们都是定义结构体提高可读性

使用特权

评论回复
26
huangqi412| | 2009-4-7 15:33 | 只看该作者

不懂为什么定义结构体降低可读性

使用特权

评论回复
27
qingfengyishi| | 2009-4-7 15:35 | 只看该作者

分配在一起有什么特殊的用途?

分配在一起有什么特殊的用途?

使用特权

评论回复
28
电脑圆圆| | 2009-4-7 17:26 | 只看该作者

帅锅,结构体里还可以定义结构体啊,何必这么小心眼

使用特权

评论回复
29
bj123| | 2009-4-7 17:31 | 只看该作者

哇,LS的霉女 圈圈的FANS? 好博学耶...

使用特权

评论回复
30
渤海三叠浪| | 2009-4-7 18:20 | 只看该作者

楼主的这个问题有什么意义么??

使用特权

评论回复
31
dudongdao|  楼主 | 2009-4-7 18:47 | 只看该作者

可读性可以针对自己~ 别人看不懂最好~

这么想大家会不会骂我,呵呵~~  computer00兄弟~~   我说的可读性是给自己看的,自己改来方便,不是给别人。

现在我就要求编译器这样分配,有时候我就这么操作,编译后看一下生成的内存映像文件,然后搞几个特殊操作,就是为了让你看不懂。

其实我的主要目的是减少代码量,一共4K的程序量。已经4004了。

还有我想问一下如何让编译器如何实现某些变量连续分配,就是说能不能定一个关键字  #PRAGMA。。。。。。  然后下面的变量我给你连续分配,地址不管,连续就行。

使用特权

评论回复
32
computer00| | 2009-4-7 19:54 | 只看该作者

俺啥也不想说了……

使用特权

评论回复
33
ayb_ice| | 2009-4-7 20:35 | 只看该作者

KEIL很方便,如图

当然结构体是通用方法,KEIL还可以直接定位,用_at_关键字...

使用特权

评论回复
34
冷漠| | 2009-4-7 20:38 | 只看该作者

Keil没那么笨。

这么简单的事。程序下相关位置写下:
#pragma  ORDER

或者在“Options选项/C51标签页”内选中“Keep Variable in order”复选框。(默认值是NOORDER即按照混列算法。)

ORDER命令控制C51编译器将所有变量按其在C51源程序中的定义,顺序安排在存储器中,该命令禁止C51编译器的混列算法。

所以,你要编译器如何安排全局变量位置,仅仅取决于你的源程序定义全局变量的位置。


使用特权

评论回复
35
李冬发| | 2009-4-7 20:44 | 只看该作者

卖公**蛋了。

使用特权

评论回复
36
5_0_5| | 2009-4-7 21:31 | 只看该作者

给个笨办法,未必能提高可读性

char Buff[10];
#define name0   Buff[0]
#define name1   Buff[1]
#define name2   Buff[2]

  ......

使用特权

评论回复
37
xwj| | 2009-4-7 21:52 | 只看该作者

呵呵,公**蛋是蛋蛋生的吗?

使用特权

评论回复
38
平常人| | 2009-4-7 22:26 | 只看该作者

估计LZ想把**程序的人绕进去,结果把帮忙的人和自己都绕

哈哈哈哈。。。。。。。。。。

按照28楼的建议想想吧!先定义一个结构体,命名为operation_struct,再在这个结构体中按照真实的含义定义几个嵌套的结构体,比如temperature_struct, moisture_struct, altitude_struct等等,然后在嵌套的结构体中进行操作,这样所有的方面都照顾到了,呵呵呵。

使用特权

评论回复
39
hotpower| | 2009-4-7 23:17 | 只看该作者

晕,楼主想的比俺还怪异

使用特权

评论回复
40
poplar1111| | 2009-4-8 07:03 | 只看该作者

菜鸟继续学习中

看了各位大虾的回答,很是受鼓舞。
继续努力。
现处于潜水期。
(争取早日达到可以提问的水平啊)

使用特权

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

本版积分规则