Est-ce que u_char est un standard?

Juste curieux de savoir si u_char est un standard. Je l’ai toujours utilisé en supposant qu’il était défini avec les types uintX_t et ainsi de suite. Mais certaines de nos bases de code sont en train de passer de u_char à “unsigned char” avec une raison “pour que les utilisateurs n’aient pas à définir u_char eux-mêmes” …

La chaîne u_char n’apparaît pas dans ce brouillon de la norme C:

http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf

Pour autant que je sache, POSIX n’en a pas besoin non plus.

Je pense que c’est dans BSD (sys / types.h) et Windows (winsock.h). Je ne considérerais pas l’un ou l’autre comme “une norme” – ce ne sont pas des normes officielles, et elles ne font certainement pas partie de la norme C, mais elles sont clairement définies et documentées.

Non, u_char n’est pas standard. Si vous devez utiliser un type standard équivalent à u_char , vous pouvez utiliser uint8_t qui fait partie de la bibliothèque standard C99 (vérifiez la compatibilité de vos plates-formes / compilateurs avec C99). stdint.h définit ce type (ainsi que de nombreux autres types d’intégraux spécifiques). Cet article de Wikipedia contient plus d’informations sur stdint.h .

Il n’est présent dans aucun fichier d’en-tête plus ancien (à l’exception de certains domaines spécifiques, tels que Kerberos et les en-têtes de réseau), et n’est pas un type intégré dans les compilateurs que je connais.