Re: [問題] 自訂的h檔中的宣告怎麼找到cc檔的定義
: ※ 編輯: Aligu1009 來自: 157.22.247.53 (06/06 15:41)
: 推 Bencrie:你應該先弄懂編譯與連結是怎麼回事 ... 06/06 15:46
: → Bencrie:你應該先編譯 a.cc和main.cc,然後再把它們連結起來。 06/06 15:47
: → Bencrie:make a.o ; make main.o ; g++ a.o main.o -o your_binary 06/06 15:49
: ※ 編輯: Aligu1009 來自: 157.22.247.53 (06/06 15:51)
: → Aligu1009:gotcha, tks! 06/06 15:55
: → tinlans:compiler 只負責找宣告,因為識別字沒宣告就不能用。 06/06 15:57
謝謝,我已經可以成功的compile + link了
但有一點疑惑想繼續發問
假設我有 a.h, a.cc 和 main.cc
a.h和a.cc分別放 myfunc() 的宣告和定義, main.cc中呼叫 myfunc()
我用 g++ -c a.cc -o a.o 得到了 a.o
用 g++ -c main.cc -o main.o 得到了 main.o
然後 g++ main.o a.o 得到 a.out
我不懂的點在於:
1. 這樣的過程中 main.cc 並不需要用到 include "a.h",那為什麼需要它?
2. 如果我在main.cc中用了include "a.h"
g++可以從main.cc知道要找a.h,接著能夠 (magically) 找到 a.cc嗎?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 157.22.247.53
推
06/06 16:15, , 1F
06/06 16:15, 1F
→
06/06 16:17, , 2F
06/06 16:17, 2F
→
06/06 16:18, , 3F
06/06 16:18, 3F
→
06/06 16:19, , 4F
06/06 16:19, 4F
→
06/06 16:19, , 5F
06/06 16:19, 5F
我實驗的結果:在main.cc中不include "a.h"
直接 g++ main.o a.o,還是可以產生a.out
→
06/06 16:22, , 6F
06/06 16:22, 6F
→
06/06 16:23, , 7F
06/06 16:23, 7F
謝謝,的確不行
我稍早實驗時可能有某個環節弄錯,歪打正著的產生了a.out
現在無法再重製實驗結果了
※ 編輯: Aligu1009 來自: 157.22.247.53 (06/06 16:37)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):