Просто любопытный, если you_char является стандартом. Я всегда использовал его принимающий его, был определен наряду с типами uintX_t и так далее. Но вижу часть нашего перехода кодовой базы от u_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 и сетевые заголовки), и он не является встроенным типом ни в одном из известных мне компиляторов.