我具有以下structs
:结构在C,其成员也结构
typedef struct stack {
void* ss_sp;
size_t ss_size;
// ...
} stack_t;
typedef struct ucontext {
ucontext_t* uc_link;
stack_t uc_stack;
// ...
} ucontext_t;
typedef struct mythread_type {
ucontext_t context;
int ID;
int status;
} mythread_t;
现在我有一个数组如下:
mythread_t mythreads[100];
我想避免使用
mythreads[0].context.uc_stack.ss_size
为了可读性的原因。
现在我在想,如果下面的代码两大块是等价的:
块1
ucontext_t c=mythreads[0].context; getcontext(&c); c.uc_stack.ss_size=1024; c.uc_stack.ss_sp=malloc(1024);
块2
ucontext_t* c=&(mythreads[0].context); getcontext(c); (c->uc_stack).ss_size=1024; (c->uc_stack).ss_sp=malloc(1024);
我想要什么是的背景堆栈分配1024个字节。
对不起,我很累,很快就回答了。那些不相同。 – 2013-03-05 06:21:27
我不明白你为什么不用mythreads [0] .context.uc_stack.ss_size .....其更好的可读性原因 – 2013-03-05 06:24:41
@KinjalPatel我刚刚发现出于某种原因mythreads [0] .context.uc_stack。 ss_size也给编译器错误。在C99中合法吗? – as3rdaccount 2013-03-05 06:38:15