0

我一直在使用一个使用 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;
4

1 回答 1

6

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

->运算符旨在处理指向结构的指针,而运算符则.直接处理结构。

于 2012-08-04T12:03:32.317 回答