这个程序在visual C++6.0 编译的时候没错,执行的时候就出错了,为什么? 错误提示如下:

#include<stdio.h>
main()
{
void gx(),gy();
extern int x,y;
printf("1:x=%d\ty=%d\n",x,y);
y=246;
gx();
gy();
}
void yx()
{
extern int x,y;
x=135;
printf("2:x=%d\ty=%d\n",x,y);
}
int x,y;
void gy()
{
printf("3:x=%d\ty=%d\n",x,y);
}

错误提示如下::::

--------------------Configuration: 2 - Win32 Debug--------------------
Linking...
1.obj : error LNK2005: _main already defined in 2.obj
1.obj : error LNK2005: _yx already defined in 2.obj
1.obj : error LNK2005: _gy already defined in 2.obj
2.obj : error LNK2001: unresolved external symbol _gx
1.obj : error LNK2001: unresolved external symbol _gx
Debug/2.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

2.exe - 1 error(s), 0 warning(s)

你这程序本身没错,只是提示你有其他的函数正在运行,VC++6中一个工作区只能运行一个程序,你点文件,选择关闭工作区,然后再新建一个运行就可以了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-20
1.obj : error LNK2005: _main already defined in 2.obj
主函数main已经在 2.obj中定义,检查文件2.c里是否含有main函数。
根据错误提示可以断定你的一个工程里两个文件中重复定义了main()函数,修改(去掉main函数)或者直接删除工程里的含有main函数的不需要运行的原程序文件,即可编译并正确执行。追问

我是照着书写的,不知哪里错了!!

追答

你删除了2.c 吗

第2个回答  2012-06-20
#include<cstdio>
using namespace std;
int main()
{
void gx(),gy();
extern int x,y;
printf("1:x=%d\ty=%d\n",x,y);
y=246;
gx();
gy();
return 0;
}
void yx()
{
extern int x,y;
x=135;
printf("2:x=%d\ty=%d\n",x,y);
}
int x,y;
void gy()
{
printf("3:x=%d\ty=%d\n",x,y);
}本回答被网友采纳
相似回答