求教~为什么变量重复定义vc报错而有的编译器不报错

C语言 码拜 10年前 (2015-05-11) 1442次浏览 0个评论
#include"stdio.h"
int main(void)
{
	for(int a;;);
	for(int a;;);
}

vc++6.0出错-error C2086: “”a”” : redefinition
而C-Free和Dev-C++都不报错

这是为什么呢?还是说没有为什么,只是程序不同罢了,

感觉其他c编译器可以的,好多vc++6.0都不行。。新手推荐哪个呢?

谢谢大家的解答!

VC6的错,用VS2013吧
10分
VC6报错是因为,
VC6中的语法不支持在for中声明变量,而应该这样

int i;   //先声明,再使用
for(i=1;;); 

建议在C中遵守上述语法,而在C++都可以。

各个编译器默认的标准不一样,gnu好像不支持这种语法,c99标准就可以
vc++6.0对C++的支持有限
引用 4 楼 mymtom 的回复:

vc++6.0对C++的支持有限

支持

对于表达式int a = ++n + ++n + ++n,vc6.0就计算错误。

5分
vc++6.0出错-error C2086: “”a”” : redefinition

这个重定义,应该可以看出来,将a当成了函数的局部变量。
以前我用过一个编译器,对于c语言,在函数中的所有局部变量,都要在开始出全部声明/定义好,在中间就出错。
这个是编译器问题,推荐用gcc吧,可以对编译选项有个比较透彻的理解和使用。

5分
凡是人造的东西都有缺陷,编译器也是人编的。
谢谢,谢谢,大概明白了
VC6的bug
它报错你就不那样写就行了嘛。。。纠结这个没什么用
引用 5 楼 Minikinfish 的回复:
Quote: 引用 4 楼 mymtom 的回复:

vc++6.0对C++的支持有限

支持

对于表达式int a = ++n + ++n + ++n,vc6.0就计算错误。

支持一半

int a = ++n + ++n + ++n 这个不应该算编译器的bug,应该算程序员的bug


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求教~为什么变量重复定义vc报错而有的编译器不报错
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!