这样的代码合法吗?

时间:2012-08-04 12:01:05

标签: c pointers standards c99

我一直在使用一个程序,使用GCC 4.4.1(ISO C99)编译,今天注意到了这个怪癖。虽然它在目标上运行没有任何问题,但编译器也不会使用-Wall发出任何警告。

void mutex_init(mutex_t *mutex)
{
 if(unlikely(mutex->magic == MUTX_MAGIC_CHAR))
    return;

 mutex->owner = NULL;
 mutex->prior = NULL;
 mutex->magic = MUTX_MAGIC_CHAR;
 thread_queue_init(&mutex->queue);
}

不应该像

*mutex->owner = NULL;

1 个答案:

答案 0 :(得分:6)

不,magic->owner相当于(*magic).owner

->运算符用于处理结构指针,而.运算符直接处理结构。