Вы можете выполнить что-то подобное, используя присвоение структуры - это решает проблему с порядком байтов:
typedef struct Color {
unsigned char r, g, b, a;
} Color;
const Color WHITE = {0xff, 0xff, 0xff, 0};
const Color RED = {0xff, 0, 0, 0};
const Color GREEN = {0, 0xff, 0, 0};
Color colors[] = {WHITE, RED};
Color c;
colors[1] = GREEN;
c = colors[1];
Однако сравнение не определено в стандарте, которое вы не можете использовать c == GREEN
, и вы не можете использовать ярлык {}
в назначении (только инициализация), поэтому c = {0, 0, 0, 0}
завершится неудачей.
Также имейте в виду, что если это 8-битный AVR (в отличие от AVR32, скажем), то вы, скорее всего, не увидите какого-либо выигрыша в производительности от любой из этих технологий.