Мне нужно собрать несколько бит в байте следующим образом:
struct
{
char bit0: 1;
char bit1: 1;
} a;
if( a.bit1 ) /* etc */
или
if( a & 0x2 ) /* etc */
Из ясности исходного кода для меня довольно очевидно, что битполы более аккуратные. Но какой вариант быстрее? Я знаю, что разница в скорости будет не слишком большой, но если я могу использовать любой из них, если один быстрее, лучше.
С другой стороны, я читал, что битовые поля не гарантируют, что биты будут расположены в одном и том же порядке на разных платформах, и я хочу, чтобы мой код был переносимым.
Примечания. Если вы планируете отвечать на "профиль", я буду, но, поскольку я ленив, если у кого-то уже есть ответ, гораздо лучше.
Код может быть неправильным, вы можете исправить меня, если хотите, но помните, какой смысл в этом вопросе, и попробуйте ответить и на него.