Где ssize_t определен в Linux? - PullRequest
2 голосов
/ 15 марта 2019

ОС: Debian 9 (Linux 4.9)

Компилятор: GCC 8.2

В настоящее время я включаю <stddef.h> (где определено size_t) и <stdint.h> (где определено большинство целочисленных типов), но у меня все еще нет ssize_t.

Где это определено?

Ответы [ 2 ]

2 голосов
/ 16 марта 2019

ssize_t определяется в sys/types.h.

За документацию POSIX :

ИМЯ

sys / types.h - типы данных

ОПИСАНИЕ

#include <sys/types.h>

ОПИСАНИЕ

Заголовок должен определять по крайней мере следующие типы:

...

ssize_t

Используется для подсчета байтов или индикации ошибки.

1 голос
/ 15 марта 2019

(https://stackoverflow.com/a/29984840/6872717):

Разделение заголовка POSIX и C в мелкозернистых файлах, вероятно, происходит со старых времен, когда компиляция могла занимать много времени, и добавление ненужных файлов заголовков занимало времядлиннее.

Если вам нужны только типы ОС, скажем, для прототипов ваших функций, то просто #include <sys/types.h>. Однако если вам нужны определения функций, тогда вы #include <unistd.h> или любой из других системных заголовков., при необходимости.

Либо #include <unistd.h> для многих функций POSIX, либо просто #include <sys/types.h> для небольшого заголовка, содержащего тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...