[問題] head檔的問題

看板C_and_CPP作者 (天又黑了)時間15年前 (2010/04/09 00:09), 編輯推噓1(1015)
留言16則, 5人參與, 最新討論串1/1
小弟不才,最近在寫程式想到一個東西 通常我在使用libary時,只要將.h檔 include進來就可以用了 可是我進去看.h檔以後,大概也只看到一些define 或是 extern 沒辦法知道他到底怎樣連結到真正有程式的地方。 我個人是認為把這個.h檔包含進來以後,他應該會跟你的編譯器講說到哪一個dll去找 你用的函式(還是說這樣想是錯的??) 假設上面的猜想是對的,那h檔裡面應該會有某些訊息來告知編譯器該去哪找 不然我總不能lib只抓h檔不抓DLL檔,問題是這一個.h檔也只是個文字文件 不是什麼編譯好的程式,結果去看也沒看到他怎樣連的,或是說這個h檔就是只對應 到一個lib,我如果把這一個h檔裡面的文字copy下來,再開另一份.h貼上 內容就不能用了?? 當然lib也不是可以讓你隨便想用就用的東西,隱藏起來不讓你知道怎麼連也是正常的 所以我想知道的是,到底是如何運作的,可以讓你完全不知道他怎麼連,卻又可以只含 .h檔就可以用他的函式,或是可以提供一些關鍵字我找答案 感謝tinlans熱心回答我,我知道是怎麼回事了,原來就是我的開發工具自己 把這些lib連好了,因為他也沒有給我設lib的路徑,我就覺得好奇怪,所以說正常來講 ,要用這些外部的lib是需要設定一些東西的吧? 回一下james732 其實我是在寫皮托科技所出一款機器人的程式,開發環境就一 個只能設定COMPILER的BIN路徑,基本上我是WORDPAD打一打送進去編譯,並沒有像之前 java還可以設classpath,這個開發工具也沒有設定linker之類的,所以才會想說到底 是誰在幫我連lib的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.108.204.134 ※ 編輯: eicsarch 來自: 120.108.204.134 (04/09 00:11)

04/09 00:17, , 1F
不是要告訴linker嗎
04/09 00:17, 1F

04/09 00:58, , 2F

04/09 00:58, , 3F
有分 dll or static library. 這就是 keyword 了 XD
04/09 00:58, 3F

04/09 01:25, , 4F
你忘了基本概念。計概課本說的編譯過程裡 library 明明畫
04/09 01:25, 4F

04/09 01:26, , 5F
在 linking 那邊...
04/09 01:26, 5F

04/09 01:27, , 6F
header 只是在 preprocessing 那裡,很單純的對 source
04/09 01:27, 6F

04/09 01:27, , 7F
code 做文字處理。像 #include 其實只是在那個位置插入 .h
04/09 01:27, 7F

04/09 01:28, , 8F
檔的內容,跟你複製貼上是一樣的原理。
04/09 01:28, 8F

04/09 01:28, , 9F
如果你的計概課本沒那張圖,把老師抓出來鞭吧。
04/09 01:28, 9F

04/09 01:30, , 10F
.h 單純只是符合「識別字使用前需宣告」的規則,以及方便
04/09 01:30, 10F

04/09 01:31, , 11F
維護宣告的一致性才有的東西,不會手殘到處重宣告 type 還
04/09 01:31, 11F

04/09 01:31, , 12F
打錯。
04/09 01:31, 12F

04/09 01:31, , 13F
原po使用的開發環境是?寫程式之前沒有額外設定嗎?
04/09 01:31, 13F

04/09 01:31, , 14F
include path 要給 preprocessor 知道,library 則是要給
04/09 01:31, 14F

04/09 01:32, , 15F
linker 知道。這些東西在編譯器常有預設值,也可以手設。
04/09 01:32, 15F
※ 編輯: eicsarch 來自: 118.170.1.211 (04/09 05:19)

04/09 05:20, , 16F
tinlans很感謝你的回答,我終於懂了
04/09 05:20, 16F
文章代碼(AID): #1BlV-flp (C_and_CPP)