Рассмотрим следующий союз:
typedef union {
struct { // Anonymous struct
int red;
int green;
int blue;
};
int colorChannels[3];
} Color;
Независимо от системы, этот код компилируется или выполняется, будут ли поля в анонимной структуре всегда совпадать с индексами в colorChannels?
Другими словами, спецификация требует, чтобы адрес памяти myColor.colorChannels[0]
был таким же, как адрес myColor.red
?
Кроме того, будет ли отличаться ответ, если код был скомпилирован как С++, а не C?
Обратите внимание, что я спрашиваю о конкретном случае, когда каждый элемент в объединении имеет тот же тип/размер (т.е. int
в этом случае)