Просто любопытно, является ли u_char стандартом. Я всегда использовал его, полагая, что он определен вместе с типами uintX_t и так далее. Но я вижу, что некоторые из нашего базового перехода кода от u_char до "unsigned char" по какой-то причине "так что пользователям не нужно определять самих u_char".
Является ли стандартом u_char?
Ответ 1
Строка u_char
не отображается в этом черновике стандарта C:
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
Это также не требуется POSIX, насколько мне известно.
Я думаю, что это в BSD (sys/types.h) и Windows (winsock.h). Я бы не стал считать, что это "стандарт" - они не являются формальными стандартами, и они, конечно же, не являются частью стандарта C, но они четко определены и документированы.
Ответ 2
Он не присутствует ни в каких старых заголовочных файлах (кроме определенных определенных областей, таких как Kerberos и сетевых заголовков), а не встроенного типа в любом компиляторе, о котором я знаю.
Ответ 3
Нет, u_char
является нестандартным. Если вам нужен стандартный тип, эквивалентный u_char
, вы можете использовать uint8_t
, который является частью стандартной библиотеки C99 (проверьте свои конкретные платформы/компиляторы для соответствия C99). stdint.h
определяет этот тип (наряду со многими другими конкретными интегральными типами). Эта статья в Википедии содержит дополнительную информацию о stdint.h
.