Как уже было сказано, вы не можете адресовать память меньше байта в C. Я бы написал макрос:
#define BIT(n) (1 << n)
и использовал его для доступа к битам. Таким образом, ваш доступ будет таким же, независимо от размера структуры, к которой вы обращаетесь. Вы должны написать свой код как:
if (status & BIT(1)) {
// Do something if bit 1 is set
} elseif (~status | BIT(2) {
// Do something else if bit 2 is cleared
} else {
// Set bits 1 and 2
status |= BIT(1) | BIT(2)
// Clear bits 0 and 4
status &= ~(BIT(0) | BIT(4))
// Toggle bit 5
status ^= BIT(5)
}
Это позволит вам получить доступ к вашей предлагаемой системе, которая будет использовать [] вместо ().