Это не совсем непрозрачный тип, а псевдоним целочисленного типа.Например, в моей системе я нахожу следующее в разных заголовочных файлах:
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
.Однако я бы сказал, что для этого есть несколько причин:
- Удобочитаемость: ясно, что переменная будет использоваться в качестве pid ( ссылка на википедию ).
- Ремонтопригодность: убедитесь, что тип всех переменных pid может быть изменен в будущем при необходимости.Например, если pids понадобится более широкий тип данных позже (например,
long int
), вам просто нужно изменить typedef
, перекомпилировать и все должно работать нормально.На самом деле, я считаю, что это уже происходит для разных архитектур.