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

看板C_and_CPP (C/C++)作者 (我愛阿蓉)時間16年前 (2009/04/27 12:45), 編輯推噓4(409)
留言13則, 3人參與, 最新討論串3/3 (看更多)
看了一下 你的abc.h 在 a.c和b.c都有 include 這是你的 ifndef沒辦法避免的 你想著 include就是把內容抄一份到你include的.c檔裡面 這時你a.c和b.c都有include是不是就是抄兩份了呢??? 然而你用ifndef只是可以擋著 假如你有a.h和b.h裡面都include abc.h的話 你main.c include a.h同時也include b.h時 可以擋掉 抄兩份abc.h的情況 (還有其他更複雜的情況 這比較直觀) 而你現在的問題出在 你abc.h 寫了實作 實作就是{ } 如果你只寫宣告 double sum(....); 這個不管你寫幾遍都沒差 (宣告可以重複 定義不能重複只能一次) 建議你把abc.h改成只寫 double sum();.... 然後你在某一個.c檔案裡面include abc.h後(也可以不include) 重點是在要記得定義abc.h裡面宣告的函式 所以在那個.c檔案 再寫一次你現在abc.h寫的東西 { ...} (就是定義他) 應該就可以了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.207.187 ※ 編輯: QQ29 來自: 140.113.207.187 (04/27 12:50) ※ 編輯: QQ29 來自: 140.113.207.187 (04/27 12:54)

04/27 14:02, , 1F
謝謝QQ大詳細的回答,我後改把fun.h改成fun.c就可以了
04/27 14:02, 1F

04/27 14:02, , 2F
還是有點不太懂為何不能用#ifndef
04/27 14:02, 2F

04/27 14:04, , 3F
可以用阿 每次寫header .h檔案 寫這是好習慣
04/27 14:04, 3F

04/27 14:04, , 4F
只是 這個ifndef 你要想成 他只再同一個檔案作用
04/27 14:04, 4F

04/27 14:05, , 5F
你不能想成說 你include一次abc.h了 下次不管誰include 都
04/27 14:05, 5F

04/27 14:05, , 6F
不會去include了 這是不對的
04/27 14:05, 6F

04/27 14:10, , 7F
那再請問QQ大一個問題,是因為我的function有要回傳值
04/27 14:10, 7F

04/27 14:11, , 8F
才需要再用一個.h檔寫宣告嗎?
04/27 14:11, 8F

04/27 14:11, , 9F
如果我的function沒有回傳值,是否就不用include
04/27 14:11, 9F

04/27 14:18, , 10F
和那個完全沒關係 每個function都是這樣
04/27 14:18, 10F

04/27 14:19, , 11F
簡單說就是 你別的檔案要用這函式 就該這樣寫
04/27 14:19, 11F

04/27 14:19, , 12F
不然應該就像上一篇推文的大大說要用inline了
04/27 14:19, 12F

04/27 14:37, , 13F
ok~了解了,謝謝大大們的耐心回答~
04/27 14:37, 13F
文章代碼(AID): #19zJXbib (C_and_CPP)
文章代碼(AID): #19zJXbib (C_and_CPP)