楼主:
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所以楼主想问什么?
“型别”定义内容以及行为等 “名称”赋予意义,你可以把不同的资料放在最前面来当作标头,因此把 Header 的型别换成 int 也是合理的,不过这个抽象化要做足才会比较好抽换,不然只会得到超多编译错误
作者: suwako 2019-02-20 17:21:00
举个例子:int a; 宣告一个名称为a的变量,其型别为int 这样你有了解了吗?
作者:
chuegou (chuegou)
2019-02-20 20:01:00如果有两颗一样的flash 你要怎么定义型别和宣告变量这样想就知道差异了
第一个范例叫把一个匿名 struct 定义为 Flash 的型别
作者:
TWkobe (中华柯比)
2019-02-20 21:52:00出发点差异 他是以flash 当主体
作者:
Neisseria (Neisseria)
2019-02-21 11:37:00变量要用 domain knowledge 来命名
是不是少看了 typedef 才产生误解?因为 typedef 的关系,Flash 是该匿名 struct 的别名Header 为别名 Flash 型别的 struct object