当尝试为多个平台编译以下(简化)代码时,我发现它在某些方面是失败的,即IBM的xlC_r.进一步的调查发现,它也没有进来和cl..它与g和Solaris的CC成功编译.

这是代码:

int main()

{

int a1[1];

bool a2[1];

for (int *it = a1, *end = a1+1; it != end; ++it) {

//...

bool *jt = a2, *end = a2+1;

//...

}

}

xlC_r错误:

"main.cpp", line 8.25: 1540-0400 (S) "end" has a conflicting declaration.

"main.cpp", line 6.25: 1540-0425 (I) "end" is defined on line 6 of "main.cpp".

ang子错误:

main.cpp:8:25: error: redefinition of 'end' with a different type

bool *jt = a2, *end = a2+1;

^

main.cpp:6:25: note: previous definition is here

for (int *it = a1, *end = a1+1; it != end; ++it) {

^

来错误:

"ComeauTest.c", line 8: error: "end", declared in for-loop initialization, may not

be redeclared in this scope

bool *jt = a2, *end = a2+1;

^

问题是为什么这是一个错误?

看看2003年的标准,它说如下(6.5.3):

The for statement

for ( for-init-statement; condition; expression ) statement

is equivalent to

{

for-init-statement;

while ( condition ) {

statement;

expression;

}

}

except that names declared in the for-init-statement are in the same

declarative-region as those declared in condition

这里没有声明的名称.

另外,它说(6.5.1):

When the condition of a while statement is a declaration, the scope

of the variable that is declared extends from its point of declaration

(3.3.1) to the end of the while statement. A while statement of the form

while (T t = x) statement

is equivalent to

label:

{

T t = x;

if (t) {

statement;

goto label;

}

}

再次,我不知道这是相关的,因为没有声明在条件.所以给出6.5.3的等效重写,我的代码应该是一样的:

int main()

{

int a1[1];

bool a2[1];

{

int *it = a1, *end = a1+1;

while (it != end) {

//...

bool *jt = a2, *end = a2+1;

//...

++it;

}

}

}

这显然会允许结束重新声明.

c语言中for中声明变量,C中for循环中的变量重新声明相关推荐

  1. java语言中的while、do while、for循环

    java语言中的while.do while.for循环 什么是循环呢? 循环就是通过某个条件,重复的执行一段逻辑代码. 1.while循环 语法: while(布尔表达式){ //逻辑代码(循环操作 ...

  2. 在Ruby中,如何跳过.each循环中的循环,类似于‘continue‘[duplicate]

    本文翻译自:In Ruby, how do I skip a loop in a .each loop, similar to 'continue' [duplicate] This question ...

  3. [原创]C/C++语言中,如何在main.c或main.cpp中调用另一个.c文件

    C/C++语言中,如何在main.cpp中调用另一个.c文件主要有5种思路: 1.在VS2012 IDE中,将被引用的.c文件后缀名全部修改为.h,然后通过IDE的解决方案资源管理器中鼠标右键单击&q ...

  4. c语言中b的作用是什么意思,C语言中是什么意思?ab怎么理解?

    C语言中&是什么意思?a&b怎么理解?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C语言中& ...

  5. c语言中sqrt函数_sqrt()函数以及C ++中的示例

    c语言中sqrt函数 C ++ sqrt()函数 (C++ sqrt() function) sqrt() function is a library function of cmath header ...

  6. c语言中ai是什么,AICODE在C语言教学中应用研究.doc

    AICODE在C语言教学中应用研究 AICODE在C语言教学中应用研究 摘要:本文研究了AI-CODE作为一种教学工具在C语言教学中的应用.首先,对传统C语言教学的不足.枯燥.缺乏互动进行了分析.其次 ...

  7. c语言中free函数_free()函数与C ++中的示例

    c语言中free函数 C ++ free()函数 (C++ free() function) free() function is a library function of cstdlib head ...

  8. c语言中为了结束由while,在C语言中,为了结束由while语句构成的循环,while后一对圆括号中表达式的值应该为()....

    线路8的速率是(,中为值国制光纤照美标准定的●按通信. 最多可以同时演奏出(,语言e语对圆括之间多台进行乐器连接通过方式,个通准的支持I标道●通用M音乐设备. 束由式模型C制号使全电用的颜色彩色式的视 ...

  9. c语言中aver是什么意思_Linux系统top命令中的io使用率,到底是什么意思?

    最近在做连续数据流的缓冲系统,C语言代码实现后,粗略测试了下,功能上应该没有问题.那么,接下来就该测试性能了.输入 top 命令,的确可以看到一系列 cpu 使用率,其中一个值得注意的子项就是 io ...

  10. [c语言]c语言中a++ ++a在加法运算中和printf函数中的运算顺序(初学者版)

    目录 加法运算顺序: 结论: 具体详情: printf函数中的运算顺序: 结论: 具体详情: 加法运算顺序: 结论: a++ ++a在加法中按如下顺序: 1.sum的值先加上a++中的a: 2.然后再 ...

最新文章

  1. torch中的copy()和clone()
  2. java查看文件夹下文件夹大小,java 获取文件夹大小,文件大小,文件个数
  3. SpringCloud微服务云架构构建B2B2C电子商务平台简介
  4. 使用thrift进行跨语言调用(php c# java)
  5. 大咖分享会 | 百度首次揭秘如何构建用户画像与移动统计
  6. [Android]使用Dagger 2进行依赖注入 - Producers(翻译)
  7. DOM判断节点类型分分钟搞定
  8. JeeSite 工作流Activiti的应用实例
  9. python执行方式及变量
  10. 2021-06-26数组详解
  11. 浅谈微生物组常用了四种统计检验方法
  12. ‘gbk‘ codec can‘t decode byte 0xae in position 199: illegal multibyte sequen 问题解决
  13. HTML和CSS基础学习
  14. 苏宁回应股权质押给淘宝;日本政府用 AI 帮民众找对象;魅族回应 “暗中给手机植入木马” | EA周报...
  15. 电脑的大脑——CPU
  16. 我国在计算机科学领域故事,《计算机故事-一》.pdf
  17. facetime 来电提醒_从命令行打开FaceTime调用
  18. 数据分析案例3 海量数据分析---根据Ip地址计算归属地的需求
  19. 荣耀v10+android+8.1,别在纠结:华为荣耀V10和荣耀10的真正的不同在
  20. 企业订货管理系统定制开发的作用|手机订货系统的说明

热门文章

  1. 全球顶会论文作者,28天手把手带你复现顶会论文
  2. 岗位推荐 | 阿里巴巴达摩院招聘自然语言处理、机器翻译算法专家
  3. 机器学习模型,能分清川菜和湘菜吗?
  4. 系兄弟就来砍我 有向图单源最短路
  5. 04 | 内存快照:宕机后, Redis 如何实现快速恢复
  6. python 化学结构_PyOrganic
  7. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(五)简单插件
  8. CG CTF WEB GBK Injection
  9. 回家 Bessie Come Home
  10. SQL解析器的性能测试