代码之家  ›  专栏  ›  技术社区  ›  sgupta

这样的法规合法吗?

  •  0
  • sgupta  · 技术社区  · 12 年前

    我一直在使用一个使用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 回复  |  直到 10 年前
        1
  •  6
  •   paxdiablo    12 年前

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

    这个 -> 运算符用于处理指向结构的指针,而 . 操作员直接在结构上工作。