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

Портативный код - бит на char

Я знаю, что стандарты C/С++ гарантируют минимум 8 бит на char, и что теоретически 9/16/42/что-то еще возможно, и поэтому все сайты о написании переносного кода предупреждают о допуске 8bpc, Мой вопрос в том, как это "не переносится"?

Позвольте мне объяснить. Как я вижу, есть 3 категории систем:

  • Компьютеры. Я имею в виду настольные компьютеры, ноутбуки, серверы и т.д., работающие под управлением Mac/Linux/Windows/Unix/* nix/posix/whatever (я знаю, что этот список не совсем корректен, но вы получить идею). Я был бы очень удивлен, услышав о любой такой системе, где char не является точно 8 бит. (пожалуйста, поправьте меня, если я ошибаюсь)
  • Устройства с операционными системами. Сюда входят смартфоны и такие встроенные системы. Хотя я не буду очень удивляться, найдя такую ​​систему, где char больше tham 8 бит, я не слышал об одном до настоящего времени (еще раз, пожалуйста, сообщите мне, если я просто не знаю).
  • Устройства с металлическим корпусом. - Видеомагнитофоны, микроволновые печи, старые сотовые телефоны и т.д. В этой области у меня нет ни малейшего опыта, так что здесь может случиться что-нибудь. Однако, действительно ли мне нужен мой код для кросс-платформы между моим рабочим столом Windows и моей микроволновой печью? Возможно, у меня когда-нибудь будет общий код для обоих?

Нижняя строка: существуют ли общие (более% 0.001) платформы (в категориях 1 и 2 выше), где char не 8 бит? И верно ли мое предположение?

4b9b3361

Ответ 2

По крайней мере, как и целочисленный размер в 64-битных архитектурах, будущие платформы могут использовать более широкий char, с большим количеством бит. Символы ASCII могут стать устаревшими, замененными на unicode. Это может быть причиной, поэтому будьте осторожны.

Ответ 3

Например, многие DSP имеют CHAR_BIT больше или равно 16.

Ответ 4

Обычно вы можете с уверенностью предположить, что файлы будут иметь 8-битные байты, а если нет, то 8-битные файлы могут быть преобразованы в нулевой дополнительный формат с помощью обычно используемого инструмента. Но гораздо опаснее предположить, что CHAR_BIT == 8. В настоящее время это почти всегда так, но в будущем это может быть не всегда. 8-битный доступ к памяти становится все более узким местом.