用vs2008 写C语言 报错,请高手帮忙指点!

xisdn 2012-09-06 09:59:45
本人用vs2008,写了C语言的一段代码,关于报错情况已用注释红色字显示说明
#include "stdio.h"

int a[10]={23,52,465,758,7,780,95,46,22,31};
int i;//-------------------------------------------亮点在这里,在主函数之前定义变量就能正常运行
int j;//-------------------------------------------亮点在这里,在主函数之前定义变量就能正常运行
int main(int argc, char* argv[])
{
printf("Hello World!\n");
printf("%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);


system("pause");
return 0;

}


但是,下面的这段代码会报错:
#include "stdio.h"


int a[10]={23,52,465,758,7,780,95,46,22,31};


int main(int argc, char* argv[])
{
printf("Hello World!\n");
printf("%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);

int i;//-------------------------------------------亮点在这里,在主函数里面定义变量就报错,本行报错内容:error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
int j;//-------------------------------------------亮点在这里,在主函数里面定义变量就报错,本行报错内容:error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
system("pause");-----------------------------------亮点在这里,这里也会报错,本行报错内容:warning C4013: “system”未定义;假设外部返回 int
return 0;

}
请高手帮忙指点!
...全文
258 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-09-06
  • 打赏
  • 举报
回复
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
xisdn 2012-09-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:
因为无法编辑有回复的帖子,追加描述,上面这两段代码(删掉system("pause")后)在VC6.0里面是可以通过的。
但是,在VS2008里面,第一段可以正常运行,第二段就报错,关键就是变量定义的位置问题
还有,按照“#1楼”回复的方法,把第二段改成--将(int i; int j; )移动到主函数内部的第一行,就可以正常运行,没有报错。但是这样写程序就不如v……
[/Quote]
恍然大悟!明白了,谢谢!
baichi4141 2012-09-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
因为无法编辑有回复的帖子,追加描述,上面这两段代码(删掉system("pause")后)在VC6.0里面是可以通过的。
但是,在VS2008里面,第一段可以正常运行,第二段就报错,关键就是变量定义的位置问题
还有,按照“#1楼”回复的方法,把第二段改成--将(int i; int j; )移动到主函数内部的第一行,就可以正常运行,没有报错。但是这样写程序就不如vc6.0方便了。

所以还想请问有没有别的方法,想保留第二段代码的编写方式--将(int i; int j; )不放在第一行,根据自己编程的需要找位置写,(变量作用域的问题,本人当然明白)
[/Quote]
C语言规定变量必须在执行语句前定义,C++没有此规定,只规定变量必须在使用前定义
VS系列编译C/C++文件时,后缀名为.c的文件视为C语言代码,使用C编译器编译,后缀名为.cpp的文件视为C++语言代码,使用C++编译器编译
跟VS版本没有关系,只不过是你想用C不允许而C++允许的语法,却写了个.c文件
xisdn 2012-09-06
  • 打赏
  • 举报
回复
因为无法编辑有回复的帖子,追加描述,上面这两段代码(删掉system("pause")后)在VC6.0里面是可以通过的。
但是,在VS2008里面,第一段可以正常运行,第二段就报错,关键就是变量定义的位置问题
还有,按照“#1楼”回复的方法,把第二段改成--将(int i; int j; )移动到主函数内部的第一行,就可以正常运行,没有报错。但是这样写程序就不如vc6.0方便了。

所以还想请问有没有别的方法,想保留第二段代码的编写方式--将(int i; int j; )不放在第一行,根据自己编程的需要找位置写,(变量作用域的问题,本人当然明白)
Gloveing 2012-09-06
  • 打赏
  • 举报
回复
system, _wsystem
Execute a command.
包含头文件
Routine Required Header Compatibility
system <process.h> or <stdlib.h> ANSI, Win 95, Win NT
_wsystem <process.h> or <stdlib.h> or <wchar.h> Win NT
===========================================================
注意C语言和C++还是有区别的
你把你的文件的后缀由XXX.c -》 XXX.cpp
再试一次,你就会发现了
图灵狗 2012-09-06
  • 打赏
  • 举报
回复
注释掉//system("pause");语句,i和j的定义放在main函数之前都是可以编译通过的,定义是没有问题且符合C语法的。
baichi4141 2012-09-06
  • 打赏
  • 举报
回复
函数外定义的变量叫做全局变量,在C语言的大工程中,这种变量的使用频率很高,还请复习基础知识
C语言要求函数内定义的变量必须在第一条执行语句之前定义,因此printf函数后定义的变量C语言不承认,还请复习基础知识
VS下的system函数在process.h头文件中定义,请包含头文件后再使用函数

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧