[問題] VC6.0 function連結問題

看板C_and_CPP (C/C++)作者 (mouse)時間16年前 (2009/04/27 00:02), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串1/3 (看更多)
小弟有個問題想請問大大們 我有一個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

04/27 00:09, , 1F
header file 有 #ifndef #define #endif 嗎?
04/27 00:09, 1F

04/27 00:10, , 2F
沒有耶,因為小弟不太懂意思,剛剛查了一下,好像是為了
04/27 00:10, 2F

04/27 00:11, , 3F
定義過怕重覆定義而用的,不知是否正確
04/27 00:11, 3F

04/27 00:28, , 4F
我用了#ifndef ABC_H #define ABC_H 然後最後面打#endif
04/27 00:28, 4F

04/27 00:28, , 5F
不過還是發生一樣的錯@@
04/27 00:28, 5F

04/27 00:29, , 6F
偷懶的方法是把sum改為inline
04/27 00:29, 6F

04/27 00:30, , 7F
通解是header只放原型 在別的.c裡面實作
04/27 00:30, 7F

04/27 00:48, , 8F
謝謝s大大的回答,不過小弟有點不太懂@@
04/27 00:48, 8F
文章代碼(AID): #19z8May6 (C_and_CPP)
文章代碼(AID): #19z8May6 (C_and_CPP)