大家看看这两个定义

[复制链接]
1925|4
 楼主| 人生长苦 发表于 2012-4-12 21:57 | 显示全部楼层 |阅读模式




图片是两个程序:
上图是
#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 | 显示全部楼层
变量名不要与 寄存器名一样。
airwill 发表于 2012-4-13 22:28 | 显示全部楼层
嗯, 要强调 "编码规范" 的重要性.
楼主这样定义变量, 哪里照顾 "可读性" 呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

217

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部