作者lowvoice (i am sam)
看板LinuxDev
標題[問題] linux kernel
時間Sat Jan 23 15:50:13 2010
作修改嵌入式Linux OS時出現幾個問題
想請問前輩能指正我的錯誤
我想在linux的include中新增一個變數,例如(int abc;)
但是在make時候會出現重複定義的錯誤
但是如果加上extern 例如(extern int abc;)
就不會出現compile的error
這是何原因? \
以前在寫code時,不是要先定義一個變數,如果其他檔案也要用這變數
才加extern 在變數前面?
另一個問題是我想在兩個kernel的.c檔中傳遞參數
要怎樣做才有辦法
是EXPORT_SYMBOL嗎??
還有一個問題
就是常常看到kernel code中有#ifdef XXX (XXX是一個變數名稱)
#endif
想請問那個XXX的值,是在哪邊決定的阿?
Makefile嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.88.6
推 alongalone:寫在 *.h 會因為多重引用,導致變數重複定義 01/23 16:47
→ alongalone:寫extern才表示實體只有一份; 個人理解是這樣 01/23 16:47
※ 編輯: lowvoice 來自: 140.113.88.6 (01/23 23:18)
推 askacis:你寫在h檔裡面,本來就是要加extern,不然多個C黨都引用該h 01/24 12:13
→ askacis:檔就會重複定義;第二個問題可以在Makefile或是kernel的 01/24 12:14
→ askacis:.config裡面定義,CONFIG_XXXXX之類的define就是了.... 01/24 12:16
→ adrianshum:這些是基本 C/C++ 問題多於 kernel 相關吧... 01/26 16:29