typedef struct
является признаком человека не до конца перешедшего с C на C++. const bool is_failed = a != "a";
if( is_failed ) [[unlikely]]
{
// failure
return ... ;
}
// success
//failure
он поместит в отдельное место, куда прыгнет в случае is_failed == true
. Этот скитер наверняка ограничен и не следует стандартам CSS3\html5 и поддерживает лишь часть функций, крутой интерфейс на нем не сделаешь.
#define bRead(value, bit) (((value) >> (bit)) & 0x01)
if( ( map & 0x3E ) == 0 )
.!
имеет булеву семантику. Если bRead
объявлена не как bool bRead( ... )
, то использование оператора !
будет вводить людей в заблуждение. Функция называется b-Read
, в которой, согласно Венгерской нотации, b
означает тип результата bool
. Слово Read
означает действие, относительно которого возвращаемое булево значение обычно воспринимается как успешность совершения действия: получилось или нет сделать Read
.b
тоже означает Бит (или, чего еще хуже, функция возвращает бит в виде значения bool
), то пользователь это поймет не сразу. Особенно когда перед bRead
стоит оператор !
и все условие выглядит как проверка на то, что следующие 5 бит после первого прочитать не удалось.( map & 0x3E ) == 0
, это однозначно и понятно читается. Скобки ставят акцент действия и знание порядка операторов тут не при чем. Оговорка - не из стандарта. ... Правильную и неправильную реализацию формализовать нельзя (без явной аттрибуции), потмоу что и тот и тот код может быть верным в зависимости от "оговорок".
а ведь ты мог бы просто согласиться с тем, что твое изложение идет с т.з. некоторой этики разработки. ... Ты оперировал на уровне некоторой смысловой надстройки над стандартом, созданной с учетом изложения стандарта.
Мне не с чем соглашаться.
Вообще, я очень надеюсь, что в стандарте это помечено как UB.