web-dev-qa-db-fra.com

Où ssize_t est-il défini sous linux?

Système d'exploitation: Debian 9 (Linux 4.9)

Compilateur: GCC 8.2

Actuellement, j'inclus <stddef.h> (où size_t est défini) et <stdint.h> (où la plupart des types intégraux sont définis), mais je n'ai toujours pas ssize_t.

Où est-il défini?

6
Cacahuete Frito

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

La division de l'en-tête POSIX et C en fichiers à grain fin provient probablement de l'ancien temps où la compilation pouvait prendre beaucoup de temps et l'ajout de fichiers d'en-tête inutiles allongeait le temps.

Si vous n'avez besoin que des types de système d'exploitation, par exemple pour les prototypes de vos fonctions, alors juste #include <sys/types.h>. Cependant, si vous avez besoin des définitions de fonctions, vous #include <unistd.h> ou l'un des autres en-têtes du système, selon les besoins.

Soit #include <unistd.h> pour de nombreuses fonctions POSIX, ou simplement #include <sys/types.h> pour un petit en-tête contenant le type.

2
Cacahuete Frito