看板 C_and_CPP 關於我們 聯絡資訊
小弟有個問題想請問大大們 我有一個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