gpt4 book ai didi

unix - GCC 声明 : typedef __pid_t pid_t?

转载 作者:行者123 更新时间:2023-12-04 03:01:29 24 4
gpt4 key购买 nike

我对(例如)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 header ,声明是最后一种方式。这是一:
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 必须是一个有符号整数,那么为什么要在头文件中输入这么深的声明呢?

最佳答案

如果您正在拉起您的 types.h通过'man types'然后在头文件的顶部(在手册页的描述下)应该存在一个定义'__pid_t'的包含文件。在某些时候作为有符号整数(如果 Ubuntu 声称它们的类型符合 POSIX;否则 pid_t 可以是任何东西)。符号' __'被认为是保留的(C 标准,不知道 C++)。如果我不得不疯狂猜测为什么pid_t定义为 __pid_t而不是一些 int 是因为 __pid_t是 Debian 或 Linux Kernel 的开发人员决定在其所有库函数中用于进程 ID 变量名称的名称;因此只有 '__pid_t'需要更改以更改进程 ID 的整数大小。

在提问之前你真的应该环顾四周,很容易找到类似的stackoverflow问题:Size of pid_t, uid_t, gid_t on Linux .

关于unix - GCC 声明 : typedef __pid_t pid_t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23954208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com