19

帖子

0

TA的资源

一粒金砂(中级)

121
 

回复 7楼 巭孬嫑夯昆 的帖子

我在uVision 4中做了实验,好像您的说法是错的。

通过define方法声明的变量不论是在占用的空间上,还是存储的值的范围上,都跟typedef没有区别。

实验程序如下
#include
#define uchar unsigned char
void main()
{
    uchar x,y;
    x = 100;
    y = 300;
} ///////////////////////////在这里加断点~

在调试器里可以watch到x和y的值,均为8位。
按照7楼的说法,y应该是int型,应该能存下300这个数。但结果并非如此。

typedef确实提供给我们了一种变量别名的“官方方法”,但目前我尚不知道define的方法存在什么隐患。

我是学计算机专业的,我非常在意编程规范,希望与大家讨论。
此帖出自51单片机论坛
 

回复

93

帖子

0

TA的资源

一粒金砂(高级)

122
 
lz 提出的是编程中非常重要的一个方面  纯软件编程对编码规范性的要求是非常严格的  大家可以看看编程规范方面的书  记得以前看过林锐的一本书 写的挺不错 涵盖了软件工程及编码规范性等
此帖出自51单片机论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(中级)

123
 
值得学习
此帖出自51单片机论坛
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

124
 
没有对与错 ,但是自己要知道区别,  习惯就好  

大学先学的C语言,用的教材就是谭浩强的, 老师也有观点不认同书上的,  还是跟老师的, 最后考试还考了满分

自己学习单片机,是网上买了个板子,看的店老板给的例子程序,有C语言基础 ,再结合图书馆的书,一看就能懂


现在接触单片机有一年了,玩过51,也接触过PIC, 发现它的本质就是改变那些寄存器的值,没什么了不起的

[ 本帖最后由 最爱小米粥 于 2012-7-25 16:15 编辑 ]
此帖出自51单片机论坛
 
 
 

回复

1560

帖子

24

TA的资源

五彩晶圆(初级)

125
 
我没看郭天祥的资料,但是初步了解51而言似乎已经可以了。重要的是之后要多参照大牛们的经典设计,取其精华,逐步实现自己的自主设计。
此帖出自51单片机论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

126
 
回想这个帖子,其实总结来说,就说了三个问题,关于编码规范的:
1.变量(等)命名;
2.全局变量的滥用;
3.#define uchar 和 typedef

不再赘述以前提过好多次的内容,只是说一两句总结:

1.命名;
  xu_changhua老师给我的回答让我印象深刻,其中他说到:
  对于没学过英文的老一辈,硬行使用英文而非拼音是强人所难;
  这的确是考虑不周,对于这一点,我想应该这样做比较好:
  在项目组内部有一个统一的规范,比方说,都使用拼音,或者说同一个人写的代码统一使用英语或者拼音,如果出现两者混搭,则不可取;

   另外,他还说了 程序是写给计算机执行的,不是给人看的。
这句话则绝对是错误的!
   程序正是写给人看的,因为计算机不会在乎你写得如何——你们大概知道传说中的C语言混乱代码大赛。同样一个helloworld,他们可以写得让你晕头转向。但是计算机依然正确执行无误。
    程序是写给人看的,写给你的维护者,当然很多时候这个维护者正是你自己,要对自己和他人负责,这一点应该是毋庸置疑的!
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

127
 
全局变量的滥用

它不仅占用静态存储空间,还有一个最严重的问题。

它把变量的权限放到了最大。
权力一旦被放纵而不约束就会出问题。
对变量也一样。

因为不分场合地使用全局变量,使用者有可能会滥用其无所不能无处不达的作用域和生存期,导致变量在函数,乃至模块,整个程序之间的四处散落,这将带来的是 数据耦合一团糟,埋下隐患,同时为调试和维护带来麻烦
——你无时无刻不能不想着,这个变量可能在另一个函数里,在另一个独立的线程里被修改(并行修改变量历来是一个最大的麻烦之一)......
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

128
 
最后是 #define 和 typedef

关于这个问题,我们先不论它使用在指针场合有可能会出错

我们就假设它完全没有问题,任何错误都不会引起,这个时侯,我想说的只有:

能正常运行的程序 和 正确的程序 是一个概念么?

使用起来没有问题,和 根本概念上的混淆 哪个更重要?

关于这个问题的另外一个附加的小问题是
typedef 的存在难道就是为了让你 只写U8 而不是 unsigned char,少写几个字母?

到此结束
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

129
 
却是说的很好,学习了
此帖出自51单片机论坛
 
 
 

回复

33

帖子

0

TA的资源

一粒金砂(中级)

130
 
师傅领进门,修行在个人
此帖出自51单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

131
 

回复 12楼 辛昕 的帖子

楼主,您好,关于你说的杜洋“各类封装和封装的发展历史”,能帮忙给我一下link吗?学习一下。谢谢!
此帖出自51单片机论坛
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(初级)

132
 
有些道理,
此帖出自51单片机论坛
 
 
 

回复

29

帖子

4

TA的资源

一粒金砂(中级)

133
 

回复 沙发 辛昕 的帖子

typedef     unsigned char       uint8;    //!< Unsigned 8 bit integer     

typedef 与#define用法不一样吧,而且哥们typedef的用法似乎是写错了吧
此帖出自51单片机论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

134
 

回复 131楼 cqzhanglang 的帖子

我是在去年一期 无线电 上看到的,网上的我的找找看有没有。
http://www.doyoung.net/articles.html

在 杜洋工作室 上有
是 图片版。

就是我当时在无线电上看到的 图片版
此帖出自51单片机论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

135
 
郭天祥的51对初学者而言只能是引路人的角色、
此帖出自51单片机论坛
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

136
 
确实,我们很多都是用郭天祥老师的教程入门的,也是在开始学习STM32,看到该固件函数库的写法后才猛然发现自己的编程习惯是那么的不成熟,不过,还是很感谢郭天祥老师,在我一开始什么都不懂的情况下,依靠他的教程入门,感觉比较容易理解。
此帖出自51单片机论坛
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

137
 

回复 133楼 萤火虫II号 的帖子

楼主这样写才是对的,typedef 为类型名定义一个新的命名,用法可以完全和原来的类型符号一样;#DEFIN只是一种文本的替换。
此帖出自51单片机论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

138
 
ls的说的好,不管如何,还是要感谢这些带我们入门的人。
同样的,意法的库都让我们感受到什么叫编程规范,但是,到了不同时候,我们会发现,这个库也有很多值得诟病的地方。
不过这个时候我们就应该知道了,编程规范这个话题无所谓对错,只有不同的出发点和观念。
所以才会有 遵循项目组一致的编程规范,而非正确的编程规范。
此帖出自51单片机论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

139
 

看视频教程入门

在我接触的学51的人里,不少人是通过看视频教程入门的,而这其中为数不少的又是看的 郭天翔 的教程。
此帖出自51单片机论坛
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(中级)

140
 
别的不说了,该贴要火。
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/3 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表