¿Es u_char un estándar?

Solo por curiosidad si u_char es un estándar. Siempre lo he usado asumiendo que se definió junto con los tipos uintX_t y así sucesivamente. Pero estoy viendo que parte de nuestro código base pasa de u_char a “unsigned char” con una razón “para que los usuarios no tengan que definir u_char ellos mismos”.

La cadena u_char no aparece en este borrador del estándar C:

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

POSIX tampoco lo requiere, que yo sepa.

Creo que está en BSD (sys / types.h), y Windows (winsock.h). Yo no consideraría que ninguno sea “un estándar”, ya que no son estándares formales y ciertamente no forman parte del estándar C, pero están claramente definidos y documentados.

No, u_char no es estándar. Si necesita usar un tipo estándar que sea equivalente a u_char , puede usar uint8_t que es parte de la biblioteca estándar de C99 (verifique sus plataformas / comstackdores específicos para el cumplimiento de C99). stdint.h define este tipo (junto con muchos otros tipos de integrales específicos). Este artículo de Wikipedia contiene más información sobre stdint.h .

No está presente en ningún archivo de encabezado anterior (excepto en ciertas áreas específicas, como Kerberos y encabezados de red), y no es un tipo integrado en ningún comstackdor que conozca.