作者mouse0411 (mouse)
看板C_and_CPP
标题[问题] VC6.0 function连结问题
时间Mon Apr 27 00:02:43 2009
小弟有个问题想请问大大们
我有一个project
这个project里面有"main.c"、"a.c"、"b.c"、"abc.h"
main.c大约如下
#include <stdio.h>
#include "abc.h"
void main()
{
.
.
.
a(r1,r2);
.
.
}
a.c大约如下
#include <stdio.h>
#include "abc.h"
void a(int *r3,int *r4)
{
double s,r;
int n;
.
.
s=sum(&r,n);
b(r3,r4);
.
.
}
b.c大约如下
#include <stdio.h>
#include "abc.h"
void b(int *r5,int *r6)
{
double r,s;
int n;
.
.
s=sun(&r,n)
.
.
}
abc.h大约如下
#include <stdio.h>
double sum(double *p,int n)
{
double summery=0;
.
.
return summery;
}
问题来了
当我compiler时都没有问题
但是一执行的时候就会出现
a.obj:error LNK2005:_sum aleady defined in main.obj
b.obj:error LNK2005:_sum aleady defined in main.obj
後来我把"a.c"与"b.c"的#inclde "abc.h"拿掉後就可以执行
但是"b.c"中"sum"出来的结果就错了??
想请问大大们问题所在??
感谢大大们有耐心看完^^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.166.98.97
1F:推 plover:header file 有 #ifndef #define #endif 吗? 04/27 00:09
2F:→ mouse0411:没有耶,因为小弟不太懂意思,刚刚查了一下,好像是为了 04/27 00:10
3F:→ mouse0411:定义过怕重覆定义而用的,不知是否正确 04/27 00:11
4F:→ mouse0411:我用了#ifndef ABC_H #define ABC_H 然後最後面打#endif 04/27 00:28
5F:→ mouse0411:不过还是发生一样的错@@ 04/27 00:28
6F:推 sunneo:偷懒的方法是把sum改为inline 04/27 00:29
7F:→ sunneo:通解是header只放原型 在别的.c里面实作 04/27 00:30
8F:→ mouse0411:谢谢s大大的回答,不过小弟有点不太懂@@ 04/27 00:48