推 xvid:宣告可以重複喔 不能重複的是定義 12/05 00:58
→ james732:宣告可以重複? 12/05 01:03
推 legendmtg:宣告可以重複沒錯啊 12/05 01:47
→ james732:(突然覺得有點混淆了...) 12/05 01:51
→ uranusjr:呃, 應該是定義, 我用語有誤...不知不覺就跟著原文的用詞 12/05 01:53
→ james732:咦,所以 struct UtilSetting; 這樣是才是宣告 12/05 01:55
→ james732:struct UtilSetting { xx xx; }; 這樣是定義吧? 12/05 01:55
→ linotwo:定義 = define 宣告 = declare 12/05 02:50
→ linotwo:例如 int i, j; 宣告 i, j 為整數變數 12/05 02:51
→ linotwo:但是 int i, i; 會錯,因為重複宣告 i 12/05 02:51
→ linotwo:宣告不應該重複,以避免同一個 symbol 有不同解釋。 12/05 02:54
→ linotwo:光是只有 struct UtilSetting; 不能算完整的宣告 12/05 02:55
推 legendmtg:int i, j;是定義 extern int i, j;才是宣告 12/05 07:13
→ legendmtg:對struct和class如james732所講 12/05 07:13
→ linotwo:int i; 是將 identifier i 與整數變數的實體做連結 12/05 08:18
→ linotwo:struct UtilSetting {...}; 則是將 UtilSetting 與其後的 12/05 08:19
→ linotwo:struct 的定義做連結 12/05 08:19
→ linotwo:我認為這兩者都算是宣告 12/05 08:20
→ linotwo:如果只有 struct UtilSetting; 是 forward declaration 12/05 08:21
→ linotwo:表示完整的定義在別的地方 12/05 08:22
推 legendmtg:你的link上面明明就寫了 12/05 12:55
→ legendmtg:// Declare and define int variables i and j. 12/05 12:55
→ legendmtg:int i; 12/05 12:55
→ legendmtg:int j = 10; 12/05 12:55
→ legendmtg:Some declarations that are not definitions are: 12/05 12:55
→ legendmtg:extern int i; 12/05 12:56
推 POSIX:宣告可重複無誤!分檔配著寫makefile 可以體會良多 T_T 12/05 15:22
→ linotwo:不包含定義的宣告可以重複,前提是宣告的內容一致。 12/05 18:05
→ linotwo:如果是包含了定義的宣告就不能重複。 12/05 18:06
推 amozartea:用#pragma once? 12/14 02:10
推 amozartea:可以用記憶體去想嗎 有配記憶體的就是定義? 12/14 02:13