[问题] 各位都怎么命名struct的type与identifer?

楼主: unknown (ya)   2019-02-20 14:52:09
范例:
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才是一个型别吧?
作者: Neisseria (Neisseria)   2019-02-20 15:01:00
所以楼主想问什么?
作者: loveme00835 (发箍)   2019-02-20 15:29:00
“型别”定义内容以及行为等 “名称”赋予意义,你可以把不同的资料放在最前面来当作标头,因此把 Header 的型别换成 int 也是合理的,不过这个抽象化要做足才会比较好抽换,不然只会得到超多编译错误
作者: suwako   2019-02-20 17:21:00
举个例子:int a; 宣告一个名称为a的变量,其型别为int 这样你有了解了吗?
作者: MOONRAKER (㊣牛鹤鳗毛人)   2019-02-20 18:04:00
生一个小孩,取名叫小孩?
作者: chuegou (chuegou)   2019-02-20 20:01:00
如果有两颗一样的flash 你要怎么定义型别和宣告变量这样想就知道差异了
作者: Bencrie   2019-02-20 21:11:00
第一个范例叫把一个匿名 struct 定义为 Flash 的型别
作者: TWkobe (中华柯比)   2019-02-20 21:52:00
出发点差异 他是以flash 当主体
作者: james732 (好人超)   2019-02-21 00:26:00
话说有时候我觉得命名比写程式还困难…
作者: MOONRAKER (㊣牛鹤鳗毛人)   2019-02-21 11:31:00
应该是把programming当国文来唸。
作者: Neisseria (Neisseria)   2019-02-21 11:37:00
变量要用 domain knowledge 来命名
作者: pericles (吼~)   2019-02-22 21:20:00
是不是少看了 typedef 才产生误解?因为 typedef 的关系,Flash 是该匿名 struct 的别名Header 为别名 Flash 型别的 struct object

Links booklink

Contact Us: admin [ a t ] ucptt.com