【发布时间】:2012-02-14 09:46:29
【问题描述】:
进程的pid定义为 pid_t pid; 而 pid_t 是一种不透明的数据类型。如果进程的 id 号可以用 int 表示,为什么不将其声明为 int 族而不是对其用户隐藏其数据类型?
【问题讨论】:
进程的pid定义为 pid_t pid; 而 pid_t 是一种不透明的数据类型。如果进程的 id 号可以用 int 表示,为什么不将其声明为 int 族而不是对其用户隐藏其数据类型?
【问题讨论】:
这并不是真正的不透明类型,而是整数类型的别名。例如,在我的系统中,我在不同的头文件中找到以下内容:
typedef __pid_t pid_t;
...
# define __STD_TYPE typedef
__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */
...
#define __PID_T_TYPE __S32_TYPE
...
#define __S32_TYPE int
因此,您说得对,pid_t 只是一个int。但是,我想说这样做有几个原因:
long int),您只需更改typedef,重新编译,一切正常。事实上,我相信这已经发生在不同的架构中。【讨论】: