Подтвердить что ты не робот

Является ли стандартом u_char?

Просто любопытно, является ли u_char стандартом. Я всегда использовал его, полагая, что он определен вместе с типами uintX_t и так далее. Но я вижу, что некоторые из нашего базового перехода кода от u_char до "unsigned char" по какой-то причине "так что пользователям не нужно определять самих u_char".

4b9b3361

Ответ 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.