好奇,如果u_char是标准。假设它与uintX_t类型一起定义,我总是使用它等等。但我看到我们的一些代码库从u_char转换为“unsigned char”,原因是“因此用户不必自己定义u_char”..
答案 0 :(得分:13)
字符串u_char
未出现在C标准草案中:
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
据我所知,POSIX也不要求它。
我认为它在BSD(sys / types.h)和Windows(winsock.h)中。我不认为任何一个是“标准” - 它们不是正式标准,它们当然不是标准C的一部分,但是它们已被明确定义和记录。
答案 1 :(得分:5)
不,u_char
是非标准的。如果您需要使用等同于u_char
的标准类型,则可以使用uint8_t
,它是C99标准库的一部分(检查您的特定平台/编译器是否符合C99)。 stdint.h
定义了这种类型(以及许多其他特定的整数类型)。 This Wikipedia article contains more information about stdint.h
.
答案 2 :(得分:4)
它不存在于任何较旧的头文件中(除了某些特定区域,如Kerberos和网络头),而不是我所知道的任何编译器中的内置类型。