【发布时间】:2014-07-20 04:34:29
【问题描述】:
我对(例如)pid_t 的声明感到困惑。 __pid_t 是什么意思?它是在别处定义的另一种类型吗?如果是,在哪里?为什么我在 ubuntu 13.04 64bit 中的 types.h 定义 pid_t 如下:
#ifndef __pid_t_defined
typedef __pid_t pid_t;
#define __pid_t_defined
#endif
而不是像
typedef int pid_t;
我看到一些网站的 types.h 标头具有最后一种方式的声明。这是一: http://www.sde.cs.titech.ac.jp/~gondow/dwarf2-xml/HTML-rxref/app/gcc-3.3.2/lib/gcc-lib/sparc-sun-solaris2.8/3.3.2/include/sys/types.h.html
更新:
好的,我发现 pid_t 是一个 __pid_t,它是一个 __PID_T_TYPE,它是一个 __S32_TYPE,它是一个 int。我现在的问题是为什么会这样? POSIX 只声明 pid_t 必须是有符号整数,那么为什么要让声明在头文件中输入这么深呢?
【问题讨论】: