website: https://en.wikipedia.org/wiki/Opaque_pointer#C
上网查了一下,opaque pointer主要是用来hide implementation,也就是作了一个encap-
sulation的动作。
看了一下wiki给的C example,有几个问题想请教各位
在例题里,作者把structure definition放在obj.c,且include obj.h,并且在obj.h里宣
告了 struct obj
Q1: 第一次看到struct obj;这种用法,这种用法是告诉compiler我在别的file里有define
struct obj这个data type吗? 如果是的话,那应该要 + extern吧?
为什么不加extern也可以?
Q2: 刚刚翻了textbook(C how to program),作者说:
struct obj{
int id;
};
这个行为叫"define"一个structure且不reserve any space in memory(page 384)。
这个跟我心中认为的define有点出入,不reserve memory的话不是应该叫declare吗?
还是对于struct与对于variable来说,define与declare的定义不一样?
Q3: 我原本习惯的作法是直接把
struct obj{
int id;
};
这个definition放在obj.h。并不像作者,把它放在.c档且在.h里面多declare一个
struct obj。
我想这就是作者所谓的hide implementation。也就是说,struct里面的member就是
implementation囉?
我认知的implementation是指"实作",也就是function里的snippet。
所以struct里面的member也算是implementation吗?还是在特定的context里才算数?
谢谢拨冗查看~