Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: C++98 совместимый двоичный литерал
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
sigmaN
Ворвался вчера ночью и соорудил вот это (странно, почему-то на не за архивированный .hpp файл форум ответил, что я не имею права на загрузку):
Нажмите для просмотра прикрепленного файла
https://pastebin.com/PXt4Y0A6

Используется вот так:
BinaryLiteral8bit(10100101)
BinaryLiteral16bit(00100000,00010000)
BinaryLiteral32bit(10000000,01000000,00100000,00010000)

Естественно, никакого рантайма, это константное выражение годное к передаче хоть в параметр шаблона.
Во время компиляции даст по рукам, если вы ошиблись и ввели не 8 цифр на байт или случайно использовали что-то кроме 0 и 1.

Сделано ибо при переезде с GCC на IAR обнаружилось, что 0b10101010 больше не работает ибо это было гнутое расширение, а в стандарте бинарные литералы только начинают появляться.
Kabdim
Если тянуть буст, то может и пользоваться бустом?
УПД Вообще какая-то каша, что-то частично стянуто с буста... лицензию от буста забыли добавить, бррр.
sigmaN
Из буста же только статик ассерт. Ну лицензию надо бы, да )

про BOOST_BINARY кстати не знал. Ох веселая реализация у них!

Upd:
Даа.... У меня простая рекурсивная шаблонная магия, а там препроцессорная. Препроцессорная черная магия! ))))
_pv
имхо при чтении перепутать положение какой-нибудь единицы в 8ми значном слове куда проще чем при конверсии из hex в уме.
да и при записи ошибиться проще, если без проверок, ну а с проверкой на количество введённых символов, пожалуй без разницы.
соответственно именно поэтому скорее всего и нет стандартных средств - за ненадобностью.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.