在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
};
Run Code Online (Sandbox Code Playgroud)
为什么这个定义混合枚举和定义?怎么解释呢?此外,它#define正在定义相同的东西.
这是因为PTHREAD_CREATE_JOINABLE并且PTHREAD_CREATE_DETACHED需要在#ifdef语句中使用(这里是以这种方式使用它的源代码示例).作者需要将其名称定义为其值,否则预处理器将不允许您使用相应的enum值.