作者zzss2003 (brotherD) 看板:
C_and_CPP标题[问题] 各位都怎麽命名struct的type与identifer?
时间Wed Feb 20 14:52:09 2019
范例:
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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1550645531.A.D21.html
1F:→ Neisseria: 所以楼主想问什麽? 02/20 15:01
已补充><
※ 编辑: zzss2003 (118.163.216.18), 02/20/2019 15:08:58
2F:→ loveme00835: 「型别」定义内容以及行为等 「名称」赋予意义,你 02/20 15:29
3F:→ loveme00835: 可以把不同的资料放在最前面来当作标头,因此把 Head 02/20 15:29
4F:→ loveme00835: er 的型别换成 int 也是合理的,不过这个抽象化要做 02/20 15:29
5F:→ loveme00835: 足才会比较好抽换,不然只会得到超多编译错误 02/20 15:29
love大大,听您这样解释,您应该满清楚我现在卡住的点在哪,但我不太能够很明白地讲出
来我的问题。
我会卡住的原因是因为,我搞不懂清楚type与identifer的定义与其差别吗?
※ 编辑: zzss2003 (118.163.216.18), 02/20/2019 15:46:13
6F:→ suwako: 举个例子:int a; 宣告一个名称为a的变数,其型别为int 这 02/20 17:21
7F:→ suwako: 样你有了解了吗? 02/20 17:21
8F:→ MOONRAKER: 生一个小孩,取名叫小孩? 02/20 18:04
9F:推 chuegou: 如果有两颗一样的flash 你要怎麽定义型别和宣告变数 02/20 20:01
10F:→ chuegou: 这样想就知道差异了 02/20 20:01
11F:推 Bencrie: 第一个范例叫把一个匿名 struct 定义为 Flash 的型别 02/20 21:11
12F:推 TWkobe: 出发点差异 他是以flash 当主体 02/20 21:52
13F:→ james732: 话说有时候我觉得命名比写程式还困难… 02/21 00:26
真的...我也这样觉得,而且我觉得我把Object跟Class的观念与变数命名的观念混在一起
了
※ 编辑: zzss2003 (118.163.216.18), 02/21/2019 10:14:35
14F:→ MOONRAKER: 应该是把programming当国文来念。 02/21 11:31
15F:推 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
16F:推 pericles: 是不是少看了 typedef 才产生误解? 02/22 21:20
17F:→ pericles: 因为 typedef 的关系,Flash 是该匿名 struct 的别名 02/22 21:25
18F:→ pericles: Header 为别名 Flash 型别的 struct object 02/22 21:27