- 论坛徽章:
- 2
|
回复 16# wangjianchangdx
如果确实是定义为:struct globals *ptr_to_globals;
完全没有必要写成:(*(struct globals**)&ptr_to_globals) = malloc(sizeof(struct globals));
直接赋值就可以了:ptr_to_globals = malloc(sizeof(struct globals));
除非ptr_to_globals不是struct globals*类型的,才需要(*(struct globals **)... 将它当作是struct globals*。
果然是因为lz的代码漏掉了重要的信息(比如const)么……
如果使用const是为了让gcc产生好的代码,直接定义为变量而不是指针可行么?
struct globals* const ptr_to_globals; -> struct globals globals;
#define G (*ptr_to_globals) -> #define G globals globals
PTR_TO_GLOBALS = memcpy(xzalloc(sizeof(G)), &init_data, sizeof(init_data)); -> memcpy(&G,&init_data,sizeof init_data);
|
|