Re: [問題] include funcitons and classes
: 兩個cpp也都inlcude test.h的情況下就不會有error
: 這樣的話在link的時候,在兩個.o裡面應該也都有class的宣告跟定義。
: 請問為什麼不會有redefinition的問題呢?
: 先謝謝各位不吝賜教的大大:)
關於你第一個用法
把函數的定義移動到某個c/cpp檔中就好
head只留函數宣告
一般習慣上這個c/cpp會和head檔名對應起來
compile的時候會把c/cpp都變成.o檔
.o裡面主要都是該檔案內的程式呼叫或是變數使用
但是使用到其他檔案的函數或是變數時
因為這個時候還不知道位置
只能先紀錄有哪些名稱,然後等待linker去找到補上
link時則是在找函數編譯過後的實體
讓呼叫函數的地方可以知道要跳到哪裡去
你可以想像是在找一段可以執行的程式
extern變數也是類似的機制
這個時候才找出這些跨檔案的名稱在何位置
而class宣告
只是定義一個資料體的格式
所以主要是compile時使用
link會去找函數、成員函數、標籤、extern變數等等東西
但不是找資料格式
.o檔裡面可能有使用到的物件
或是有函數的可執行機器碼
但是應該沒有物件宣告與定義
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.210.62
※ 編輯: iamstudent 來自: 140.113.210.62 (04/12 14:23)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):