Chinaunix

标题: VC++6的神奇 [打印本页]

作者: cai800315    时间: 2014-05-15 23:28
标题: VC++6的神奇
有下面的简单程序:
#include <stdio.h>

int main( void )
{
        printf("hello,world!\n");

        int i=0;
        int *p=&i;

        printf("i=%d\n",*p);
        return 0;
}

在vc++6中编译,结果出来下面的错误,
D:\cdh\hello.c(7) : error C2143: syntax error : missing ';' before 'type'
D:\cdh\hello.c(8) : error C2143: syntax error : missing ';' before 'type'
D:\cdh\hello.c(10) : error C2065: 'p' : undeclared identifier
D:\cdh\hello.c(10) : error C2100: illegal indirection


这个出错我是百思不得其解,请高手指点一下。
作者: windoze    时间: 2014-05-15 23:35
VC6当然很神奇,Turbo C++更神奇
作者: cai800315    时间: 2014-05-15 23:58
有谁能解释一下?
作者: Susake_    时间: 2014-05-16 00:23
printf("hello,world!\n";
这是啥?试试VS2013
作者: fender0107401    时间: 2014-05-16 00:28
vc6.0,这个都很多年了吧。。。
作者: hellioncu    时间: 2014-05-16 08:25
你先把代码贴正确
作者: folklore    时间: 2014-05-16 08:30
src没问题, VC6也没问题。

问题在这:

D:\cdh\hello.c
作者: hellioncu    时间: 2014-05-16 08:53
folklore 发表于 2014-05-16 08:30
src没问题, VC6也没问题。

问题在这:


还是你观察仔细,当作C编译,变量定义不能在语句后面
作者: Sniper_Killer    时间: 2014-05-16 10:33
变量定义要在最前面
作者: folklore    时间: 2014-05-17 09:33
回复 8# hellioncu

俺是扫描仪。。
   
作者: idi0t    时间: 2014-05-17 10:42
VC6(99年之前出的好老了) C编译只支持C89,同时Ansi c标准规定变量必须声明在函数最开始的地方,而C99则允许在使用的时候才声明
作者: fucanfu    时间: 2014-05-17 15:04
其他的也不行
作者: langue    时间: 2014-05-22 06:37
编译器参数 /TC 改成 /TP,或者用 { } 增加一个新的代码块,定义在代码块的头部。
我的习惯是尽量不要让声明出现在函数体的中间位置。
作者: sxcong    时间: 2014-05-29 17:23
你的扩展名是.c的话,就出错,因为老的c标准,
printf("hello,world!\n");
int i=0;

定义变量一定要放在前面。

不过,如果扩展名是.cpp,这样是不错的。






欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2