Просто интересно, если u_char является стандартом. Я всегда использовал его, полагая, что он определен вместе с типами uintX_t и так далее. Но я вижу, что некоторые из нашего кода переходят от u_char к «unsigned char» по причине «поэтому пользователям не нужно определять самих u_char».Является ли u_char стандартом?
ответ
Он отсутствует в каких-либо старых файлах заголовков (кроме определенных определенных областей , как Kerberos и сетевые заголовки), а не встроенный тип в любом компиляторе, о котором я знаю.
Строка u_char
не появляется в этом проекте стандарта C:
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
Это не требует POSIX либо, насколько я знаю.
Я думаю, что это в BSD (sys/types.h) и Windows (winsock.h). Я бы не стал считать, что это «стандарт» - они не являются официальными стандартами, и они, конечно же, не являются частью стандарта C, но они четко определены и документированы.
Кроме того, проблема использования этих уродливых нестандартных типов заключается в том, что вы должны быть очень осторожны в их определении. Некоторые системы уже будут определять их (что неверно), что приводит к ошибкам, если вы сами определяете их, а другие - нет, то есть вы не можете использовать этот тип, если сами не определяете его. Самый безопасный способ - просто не использовать этот мусор, а не лениться и выписать 'unsigned char', когда вы это имеете в виду. –
@R .. или используйте '
@JonathonReinhart: используя 'uint8_t', имеет встроенное утверждение, что' CHAR_BIT == 8', поскольку тип запрещен к существованию, если 'CHAR_BIT> 8'. Это нормально, если вам нужен 8-битный тип, но если вы имеете в виду «целое число без знака, занимающее одну единицу хранения в этой реализации, независимо от того, что может быть», тогда вы должны сказать, что: 'unsigned char'. –
Нет, u_char
нестандартен. Если вам нужен стандартный тип, эквивалентный u_char
, вы можете использовать uint8_t
, который является частью стандартной библиотеки C99 (проверьте свои конкретные платформы/компиляторы для соответствия C99). stdint.h
определяет этот тип (наряду со многими другими конкретными интегральными типами). This Wikipedia article contains more information about stdint.h
.
- 1. Является ли syslog стандартом ведения журнала или стандартом протокола?
- 2. Является ли size_t только стандартом C++ или стандартом C?
- 3. Является ли токен $ id стандартом JSON?
- 4. Является ли стандартом создание нескольких приложений одновременно?
- 5. Является ли обновление со стандартным стандартом присоединения
- 6. Является ли постоянная справка стандартом C?
- 7. Является ли C++ 21 следующим стандартом?
- 8. Является ли WADL стандартом для приложений REST?
- 9. Является ли термин «метод» определенным стандартом C++?
- 10. Является ли порядок инициализации гарантированным стандартом?
- 11. Является ли размер std :: array определенным стандартом
- 12. Получение отрицательного NaN на g ++ 4.4.3, является ли это стандартом?
- 13. Является ли динамическая загрузка строго совместимой со стандартом C++?
- 14. Является ли безопасность объекта как диктатора действительно действительно гарантированным стандартом?
- 15. Является ли SP инициированным запросом без AuthnRequest отраслевым стандартом?
- 16. Является ли Xcode 6.1.1 стандартом ISO для C++?
- 17. Является ли стандартом доступ к статическому методу из других классов?
- 18. Является ли этот взлом действительным в соответствии со стандартом?
- 19. Является ли стандартом для UTF8 + избежать наших международных URL?
- 20. Является ли SFML :: View стандартом оси инвертированного y? Как обходиться?
- 21. Является ли протокол odata хорошим стандартом для служб REST?
- 22. Является ли стрелка анти-шаблоном стандартом в Scala
- 23. Struct для u_char преобразования
- 24. Является пустой строкой, определенной стандартом C++?
- 25. ActionMailer preview_path не является стандартом RSpec
- 26. Что является стандартом для объекта в javascript?
- 27. Почему jQuery не является стандартом W3C?
- 28. RS232 является стандартом протокола или взаимодействия
- 29. конвертировать строку u_char *
- 30. Являются ли переоценки запрещенными стандартом C?
u_char не является частью официального стандарта ANSI C –