c语言 error LNK2005 菜鸟问题 急急急~

来源:百度知道 编辑:UC知道 时间:2024/05/08 04:45:28
程序是对书上打的 应该没问题
#include <stdio.h>
#include <string.h>
#define N 80
void fun(char *s, char t[])
{ unsigned int i, j=0;
for(i=0; i<strlen(s); i++)
/***********found**********/
if(i%2 || s[i]%2==0)
t[j++]=s[i];
/***********found**********/
t[j]=0;
}
main()
{ char s[N], t[N];
printf("\nPlease enter string s : "); gets(s);
fun(s, t);
printf("\nThe result is : %s\n",t);
}

但总是modi1.obj : error LNK2005: _fun already defined in blank1.obj
这话到底什么意思?

经常出这样现error LNK2005 ,真打击我学c语言的激情了。
谁能指点下我 先谢啦

在你的bank1.c 和modi1.c里面都定义了fun这个函数。
有可能是两个章节的不同例子,但是你在你的IDE的同一个工程里面添加了这两个c文件,IDE就会发现fun这个函数在两个c文件编译出来的中间文件(obj)都有定义,所以呢,他并不会说:“哦,同一个文件的优先”,而是会跟你抱怨,说已经在blank1.obj里面定义了。

解决办法(任选一个):
1.在工程里面移除bank1.c。
2.或者在重命名bank1.c里面的所有出现的fun为其他名字。
3.或者在bank1.c和modi1.c的定义那一行的最前面加一个static。

另外,初学编程,面对众多工具都是英文版的是有些不适应,坚持啊。

(是用的Visual C++吧?建议你装一个相应的MSDN,一般都在同一个DVD安装盘上)你试试选中(好像是双击就是了)错误窗口的modi1.obj : error LNK2005: _fun already defined in blank1.obj 这一行,然后按F1,Visual C++就会打开MSDN帮助文档(如果你装了MSDN的话)。

还有一个建议就是,把英语当成一门编程语言来学,因为程序太多的东西都要和英文打交道,比如那条错误信息,或者在线帮助文档。
这里是你这个LNK2005的官方文档: http://msdn.microsoft.com/en-us/library/72zdcz6f(VS.80).aspx
(直接点击无效,全部拷贝到地址栏打开。)

运行正常,你重启一下软件你可以用CTRL+f5运行试试。上面的语句是说你已经在blank1.obj 中定义了fun.定义重复。

重复定义