看板 C_and_CPP 關於我們 聯絡資訊
範例: typedef struct { unsigned long LTH; //header description unsigned long VER; //header description char Name[FUNCTION_NAME_LTH]; //header description }Flash; //為什麼這些members的型別是Flash,而不是Header? typedef struct { Flash Header; //型別為Flash的Header unsigned long CRC32; }Component; Component* DSP = malloc(sizeof(Component)); DSP.Header.VER = 2 //DSP(元件型別)的標頭檔(Flash型別)的版本號(數字型別)為2 ^^^^^^^^^^^^^^^^^^ 非常符合邏輯 上述的命名方式有一個地方讓我覺得很奇怪,為什麼標頭檔的型別為Flash,而不是Header ?。 因為Flash不應該是一個型別阿...Header才是一個型別吧? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.216.18 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1550645531.A.D21.html
Neisseria: 所以樓主想問什麼? 02/20 15:01
已補充>< ※ 編輯: zzss2003 (118.163.216.18), 02/20/2019 15:08:58
loveme00835: 「型別」定義內容以及行為等 「名稱」賦予意義,你 02/20 15:29
loveme00835: 可以把不同的資料放在最前面來當作標頭,因此把 Head 02/20 15:29
loveme00835: er 的型別換成 int 也是合理的,不過這個抽象化要做 02/20 15:29
loveme00835: 足才會比較好抽換,不然只會得到超多編譯錯誤 02/20 15:29
love大大,聽您這樣解釋,您應該滿清楚我現在卡住的點在哪,但我不太能夠很明白地講出 來我的問題。 我會卡住的原因是因為,我搞不懂清楚type與identifer的定義與其差別嗎? ※ 編輯: zzss2003 (118.163.216.18), 02/20/2019 15:46:13
suwako: 舉個例子:int a; 宣告一個名稱為a的變數,其型別為int 這 02/20 17:21
suwako: 樣你有了解了嗎? 02/20 17:21
MOONRAKER: 生一個小孩,取名叫小孩? 02/20 18:04
chuegou: 如果有兩顆一樣的flash 你要怎麼定義型別和宣告變數 02/20 20:01
chuegou: 這樣想就知道差異了 02/20 20:01
Bencrie: 第一個範例叫把一個匿名 struct 定義為 Flash 的型別 02/20 21:11
TWkobe: 出發點差異 他是以flash 當主體 02/20 21:52
james732: 話說有時候我覺得命名比寫程式還困難… 02/21 00:26
真的...我也這樣覺得,而且我覺得我把Object跟Class的觀念與變數命名的觀念混在一起 了 ※ 編輯: zzss2003 (118.163.216.18), 02/21/2019 10:14:35
MOONRAKER: 應該是把programming當國文來唸。 02/21 11:31
Neisseria: 變數要用 domain knowledge 來命名 02/21 11:37
我有試過把我的需求用中文寫下來,但是還是還辦法寫出來相對應的結構 需求: 記憶體(memory)有很多種類,快閃(flash)是其中的一種,而海思(hynix)是做快閃記憶體 的品牌 案子所使用的是海思的快閃記憶體,在記憶體裡面存放著好幾筆相同格式的元件,每個元 件都有其標頭檔(header)(FunNumber, Length, Version, Name)、資料、CRC碼 同一個元件如果Version不同,其資料也不一樣 我怎麼覺得如何命名跟語言程度有某種程度上的關聯性阿Orz ※ 編輯: zzss2003 (118.163.216.18), 02/21/2019 13:40:23
pericles: 是不是少看了 typedef 才產生誤解? 02/22 21:20
pericles: 因為 typedef 的關係,Flash 是該匿名 struct 的別名 02/22 21:25
pericles: Header 為別名 Flash 型別的 struct object 02/22 21:27