4

pthread.h中,可以找到以下定义:

/* Detach state.  */
enum
{
  PTHREAD_CREATE_JOINABLE,
#define PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_JOINABLE
  PTHREAD_CREATE_DETACHED
#define PTHREAD_CREATE_DETACHED PTHREAD_CREATE_DETACHED
};

为什么这个定义混合枚举和定义?如何解读它?此外,它#define正在定义相同的东西。

4

1 回答 1

7

这是因为PTHREAD_CREATE_JOINABLE并且PTHREAD_CREATE_DETACHED需要在#ifdef语句中使用(这里是一个以这种方式使用的源代码示例)。作者需要将他们的名字定义为他们的值,否则预处理器不会让你使用相应的enum值。

于 2013-10-01T09:43:21.713 回答