欢迎
游客
,
注册
|
登录
|
会员
|
界面
|
简洁版本
|
在线
|
帮助
商都网教育宝典宝库
商都网教育宝典宝库
计算机
等级考试
C++处理for循环作用域规则
本主题被查看736次, 共1个帖子, 1页, 当前为第
1
页 选择页数: 1 跳转到第
页
上一主题
下一主题
标题: C++处理for循环作用域规则
huahua
-[尕硴]
超级版主
UID: 71
来自:
精华:
130
积分: 14003
帖子: 12909
注册: 2007-10-22 17:59:00
状态:
离线
威望: 444.00
金钱: 3355.00 元
发短消息
用户资料
树型
回复
引用
只看楼主
2008-04-11 15:19
C++处理for循环作用域规则
for (int n=0; n〈MAX; ++n)
{
//..do something
}
++n; //OK in pre-standard C++; illegal in ISO C++
然而,在 ISO C++ 中,for 循环变量的作用域被限制为循环本身。虽然这一改变不可否认地具有其意义,但是它却影响到了老代码以及新代码。下面我将示范一些迁移技术帮助你处理这一改动。
遗留代码
对于那些使用标准制定之前的作用域规则的遗留代码,如果使用与标准兼容的编译器编译它们,那么就有可能出现错误。解决这一问题的最好方法是修改代码。但是,代码修正需要彻底测试,而且有时候还会招致一连串的缺陷和编译错误。
如果不想处理这一难于解决的问题,同时又希望升级编译器,那么不妨检查一下能否有办法恢复标准制定之前 for 循环变量的行为。如果确实使用了这种变量,那么打开这个选项,然后(使用注释)明确地在代码记下这一事实,以使将来的程序员知道如何正确地编译这一代码。
If you're wary of relying on compilers' favors, there's an alternative patch: move the variable's definition outside the for-loop:
//如果不愿依赖编译器的帮助,那么还有一种替代方案:将变量的定义移至 for 循环之外:
int n=0; //originally was inside the for loop
for (/*n was here*/; n〈MAX; ++n)
{
//..do something
}
int x=n; //OK
要确保在有改动的地方添加一句描述性注释。
作用域规则可能也会影响新代码。比如说,假设我们需要使用一个依然保持标准制定之前行为的编译器来编译新代码。
为了确保 for 循环变量不在循环之外被访问,我们可以将整个循环之外包围一对大括号。
{//restrict for-loop variables' scope
for (int n=0; n〈MAX; ++n)
{
//..do something
}
}//restrict for-loop variables' scope
With the help of conditional compilation, you can use a macro that inserts braces only when they are needed:
在条件编译的帮助下,我们可以使用一个宏来控制只在需要的地方插入大括号:
#if defined(OLD_FOR_SCOPING)
#define OPEN_FOR_GUARD {
#define CLOSE_FOR_GUARD }
#else
#define OPEN_FOR_GUARD
#define CLOSE_FOR_GUARD
#endif
OPEN_FOR_GUARD
for (int n=0; n〈MAX; ++n)
{
//..do something
}
CLOSE_FOR_GUARD
如果你正在使用新代码以及与标准兼容的编译器,那么新作用域规则将不会带来任何问题。然而,当涉及到遗留代码或老编译器时,你可以应用我在这个小技巧中描述的技术绕开这一问题。
#1
大
中
小
本主题被查看736次, 共1个帖子, 1页, 当前为第
1
页 选择页数: 1 跳转到第
页
论坛跳转...
胎教早教
准备怀孕
怀孕期
出生与分娩
婴儿期(0-1岁)
幼儿期(1-3岁)
学龄前(3-6岁)
中小学
课件
试题
中招
中招动态
招生快讯
相关政策
考试辅导
语文
数学
英语
物理
化学
生物
政治
历史
地理
家长交流
历年中招资料
满分作文
高考
高考动态
高考状元
历年试题
家长必读
志愿填报
心理减压
复习技巧
考生经验
备考辅导
高考大纲
历年分数线
高考常识
高考指南
语文
数学
外语
物理
化学
生物
历史
地理
政治
文综
理综
高考满分作文
家长
教师
读书
作文
郑州新东中学
学校动态
学生天地
高等教育
移民留学
成人高考
自学考试
考研
论文
外语
雅思
托福
四六级
实用英语
职称外语
公共英语(PETS)
商务英语
英语口语
小语种
英思力美语
在线留言
学校动态
课程
学生作业
英思力相册
学英语资料
计算机
办公应用
软件开发
平面动画设计
IT资格认证
等级考试
网络工程
初学者之路视频教程
计算机基础
Windows
Word2003
Execl2003
Powerpoint
Flash
Deamweaver
Fireworks
黑客基础
北大青鸟
青鸟新闻
开班信息
青鸟师资
在线问答
学员相关
技术文章
职业资格
企业培训师
资料库
历年试题
案例探讨
相关政策
财务会计
公务员考试
营养师
营养动态
职业前景
健康权威
学习指导
营养知识
健康食谱
心理咨询师
心理俱乐部
学习指导
花季少年
爱情婚姻
心理障碍
人在职场
职业前景
经典案例
导游
司法考试
建筑工程资格
外贸资格
医药资格考试
教师资格考试
电子商务师
人力资源师
资料库
历年试题
案例探讨
相关政策
技能培养
汽车驾驶
美容美发
美容
美发
化妆
整体形象设计
相关课程
人才信息
茶艺
调酒
厨师烹饪
手机维修
音乐乐器
舞蹈健身
企业管理
人力资源
市场营销
管理激励
管理书籍
管理视频
信诺专栏
职场招聘
招聘信息
职场沙龙
现在的时间是 2008-10-11 22:13:33
版权所有
商都网教育宝典
Powered by
Discuz!NT
1.0.6666 Copyright © 2001-2008
Comsenz Inc
.
Processed in 0 seconds