云风,你好。今天看你在google code里开源的gc代码。有一处困惑: 在文件:gc.c里: 167 for (i=E.size+1;i<sz;i++) { 『More Lines』
没什么高深的,u.free 和 u.n.children 并没有位置冲突。如果你觉得看的不舒服,可以把 union 的定义修改一下:
struct node { int mark; union { struct { union { void * mem; int free; } u; struct link *children; void (*finalizer)(void *); } n; struct { union { intptr_t mem; int free; } u; struct link *children; intptr_t weak; } c; } u;};
把 free 移到里面去。我只是不想在代码里写太烦琐了。而且这样也未必表达的更清楚。
当我读到: 180 ret->u.n.mem=p; 181 ret->mark=0; 『More Lines』- 回复 | (2054) | Chinainvent | 2008-10-05 08:47:46
从union的用法上,这应是错误的写法吧?难道有高深的用意?- 回复 | (2053) | Chinainvent | 2008-10-05 08:40:55