u_char是标准吗?

只是好奇u_char是否是标准。 假设它与uintX_t类型一起定义,我总是使用它等等。 但我看到我们的一些代码库从u_char转换为“unsigned char”,原因是“因此用户不必自己定义u_char”。

字符串u_char未出现在C标准的草案中:

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

据我所知,POSIX也不要求它。

我认为它在BSD(sys / types.h)和Windows(winsock.h)中。 我不认为任何一个是“标准” – 它们不是正式标准,它们当然不是标准C的一部分,但是它们是明确定义和记录的。

不, u_char是非标准的。 如果您需要使用与u_char等效的标准类型,则可以使用uint8_t ,它是C99标准库的一部分(检查您的特定平台/编译器是否符合C99)。 stdint.h定义了这种类型(以及许多其他特定的整数类型)。 这篇维基百科文章包含有关stdint.h更多信息。

它不存在于任何较旧的头文件中(除了某些特定区域,如Kerberos和网络头),而不是我所知道的任何编译器中的内置类型。