打印

大家看看这两个定义

[复制链接]
1426|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主




图片是两个程序:
上图是
#include<reg51.h>
int IE=10;
main()
{
     
}

下图是
#include<reg51.h>
main()
{
int IE=10;   
}

下图的程序无错误无警告,上图程序有错误



这里我故意定义了一个变量IE,当然我知道这个已在<REG51.H>中定义了sfr IE   = 0xA8;

但这里为什么还能在main()函数里定义呢,却不显示重定义错误redefinition
但在main()函数之前却不能定义,会显示redefinition

相关帖子

沙发
john_lee| | 2012-4-12 22:13 | 只看该作者
复合语句(compound statement)内部允许定义与复合语句外(包括全局)同名的变量,其作用域将只限制在该复合语句中,复合语句外的同名变量,将被隐藏。

使用特权

评论回复
板凳
原野之狼| | 2012-4-13 00:42 | 只看该作者
1  翻翻C语言的教材 了解下变量的作用域与覆盖规则
2  学习下编码规范 从开始就要养成良好的习惯

使用特权

评论回复
地板
上官金虹| | 2012-4-13 17:41 | 只看该作者
变量名不要与 寄存器名一样。

使用特权

评论回复
5
airwill| | 2012-4-13 22:28 | 只看该作者
嗯, 要强调 "编码规范" 的重要性.
楼主这样定义变量, 哪里照顾 "可读性" 呢?

使用特权

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

本版积分规则

50

主题

217

帖子

1

粉丝