Unix GCC声明:typedef\uu pid\t pid\t?
我对(例如)pid\t的声明感到困惑。什么意思?它是其他地方定义的另一种类型吗?如果是,在哪里?为什么我的types.h在Ubuntu13.04 64位定义的pid像:Unix GCC声明:typedef\uu pid\t pid\t?,unix,gcc,fork,Unix,Gcc,Fork,我对(例如)pid\t的声明感到困惑。什么意思?它是其他地方定义的另一种类型吗?如果是,在哪里?为什么我的types.h在Ubuntu13.04 64位定义的pid像: #ifndef __pid_t_defined typedef __pid_t pid_t; #define __pid_t_defined #endif 而不是像这样 typedef int pid_t; 我看到一些网站有.h类型的标题,声明是最后一种方式。这是一个: 更新: 好的,我发现一个pid是一个,是一个,是一个
#ifndef __pid_t_defined
typedef __pid_t pid_t;
#define __pid_t_defined
#endif
而不是像这样
typedef int pid_t;
我看到一些网站有.h类型的标题,声明是最后一种方式。这是一个:
更新:
好的,我发现一个pid是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个int的,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一个,是一?POSIX只声明pid_t必须是有符号整数,那么为什么要让声明在头文件中输入soo deep 如果您通过“man types”提取
types.h
,那么在头文件的顶部(在手册页的“描述”下)应该存在一个include文件,该文件在某个点上将“pid”t
定义为有符号整数(如果Ubuntu声称它们的类型符合POSIX;否则pid\t
可以是任何类型)。符号'.'
被认为是保留的(C标准,对C++一无所知)。如果我不得不胡乱猜测为什么pid\u t
被定义为\uu pid\u t
,而不是一些int,那是因为\uu pid\u t
是Debian或Linux内核开发人员决定在所有库函数中使用的进程ID变量名;因此,只需更改“\uu pid\u t”
,即可更改进程ID的整数大小
在提问之前,你应该先环顾四周,很容易找到类似的stackoverflow问题:。好的,我找到了这个问题答案上的pid是什么意思: 引述 取消报价
所以pid_t是一个uuu pid_t,它是一个uu pid_t_类型,它是一个uu S32_类型,它是一个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