同一源程序在vc2012可以正确运行,但是在vc6就编译出错,为什么啊?
电脑win8系统,我用vc2012写了一简单程序,可以正确编译运行,但是当把代码拷到vc6上时就不能编译了,提示错误。请问,这是什么问题导致的?如果要在vc6上能运行应该...
电脑win8系统,我用vc2012写了一简单程序,可以正确编译运行,但是当把代码拷到vc6上时就不能编译了,提示错误。请问,这是什么问题导致的?如果要在vc6上能运行应该怎么改一下?学生初学c语言。大神指导呐!谢谢!
附上代码:
#include<stdio.h>
void main(void)
{printf("欢迎使用字母大小写转换工具\n请输入任意单个字母:");
char a;
a=getchar();
if (a>='a'&&a<='z')
{a=a-32;
printf("该小写字母对应大写形式是:");
putchar(a);
printf("\n***************************************\n");}
else
if (a>='A'&&a<='Z')
{a=a+32;
printf("该大写字母对应小写形式是:");
putchar(a);
printf("\n***************************************\n");
}
else
printf("输入错误!!!\n\007");
}
——————————————————————————————————————
用vc6编译时提示的错误:
--------------------Configuration: 字母大小写智能转换 - Win32 Debug--------------------
Compiling...
字母大小写智能转换.c
c:\users\james bond\desktop\字母大小写智能转换.c(4) : error C2143: syntax error : missing ';' before 'type'
c:\users\james bond\desktop\字母大小写智能转换.c(5) : error C2065: 'a' : undeclared identifier
执行 cl.exe 时出错.
字母大小写智能转换.obj - 1 error(s), 0 warning(s) 展开
附上代码:
#include<stdio.h>
void main(void)
{printf("欢迎使用字母大小写转换工具\n请输入任意单个字母:");
char a;
a=getchar();
if (a>='a'&&a<='z')
{a=a-32;
printf("该小写字母对应大写形式是:");
putchar(a);
printf("\n***************************************\n");}
else
if (a>='A'&&a<='Z')
{a=a+32;
printf("该大写字母对应小写形式是:");
putchar(a);
printf("\n***************************************\n");
}
else
printf("输入错误!!!\n\007");
}
——————————————————————————————————————
用vc6编译时提示的错误:
--------------------Configuration: 字母大小写智能转换 - Win32 Debug--------------------
Compiling...
字母大小写智能转换.c
c:\users\james bond\desktop\字母大小写智能转换.c(4) : error C2143: syntax error : missing ';' before 'type'
c:\users\james bond\desktop\字母大小写智能转换.c(5) : error C2065: 'a' : undeclared identifier
执行 cl.exe 时出错.
字母大小写智能转换.obj - 1 error(s), 0 warning(s) 展开
3个回答
展开全部
经验证,这似乎是一个VC6.0独有的BUG。
他无法识别位于main函数下的第一条printf语句。
将你的程序第一条和第二条位置对调一下就能够顺利弯颤执行。
PS: winXP都已经不能保埋戚败证VC6.0完全仔仔正确,何况win8.
他无法识别位于main函数下的第一条printf语句。
将你的程序第一条和第二条位置对调一下就能够顺利弯颤执行。
PS: winXP都已经不能保埋戚败证VC6.0完全仔仔正确,何况win8.
更多追问追答
追问
这样啊,正纳闷呢!刚刚试了下,果然可以!谢谢啦!
追答
又验证了一下,其实也不能算BUG。
因为你的文件扩展名是.c,也就是C文件。C文件要求必须将所有的声明放到最前面。
我猜你在用2013的时候新建文件的扩展名是cpp吧。
你试试如果将扩展名改为.c,也就是纯C语言文件,那么应该一样会报错。
综上,这不是BUG,而是C语言的要求。C语言要求所有的声明必须强制在正式的执行语句之前。可能跟底层的编译有关吧。
展开全部
将char a定义在搭裂printf之前就没事了。毁薯
详见纤枝者:
http://zhidao.baidu.com/link?url=bKEg1Bq71GOAtqXSzXu55Lmm4XVL24r79yh-fo0tD-3tUmRo66EWwVbvEpjFgBfAqSdY7X8p5Qa-UZ8iG97d2a
详见纤枝者:
http://zhidao.baidu.com/link?url=bKEg1Bq71GOAtqXSzXu55Lmm4XVL24r79yh-fo0tD-3tUmRo66EWwVbvEpjFgBfAqSdY7X8p5Qa-UZ8iG97d2a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你重新建一个工程 别蔽敬用”字母大小写智能转换“做工程名 用英做并洞文名字试试
代码部分纯枯应该没什么问题
代码部分纯枯应该没什么问题
更多追问追答
追问
不行啊,我刚刚试了,还是不能编译,提示的错误也没变。会不会是不兼容win8呢?
追答
我是用win7 64位机编译的 没问题 你是重新建的工程么?重新敲一下代码试试呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询