作者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
推 plover:header file 有 #ifndef #define #endif 嗎? 04/27 00:09
→ mouse0411:沒有耶,因為小弟不太懂意思,剛剛查了一下,好像是為了 04/27 00:10
→ mouse0411:定義過怕重覆定義而用的,不知是否正確 04/27 00:11
→ mouse0411:我用了#ifndef ABC_H #define ABC_H 然後最後面打#endif 04/27 00:28
→ mouse0411:不過還是發生一樣的錯@@ 04/27 00:28
推 sunneo:偷懶的方法是把sum改為inline 04/27 00:29
→ sunneo:通解是header只放原型 在別的.c裡面實作 04/27 00:30
→ mouse0411:謝謝s大大的回答,不過小弟有點不太懂@@ 04/27 00:48