Предупреждение при использовании анонимных структур в матричном типе 4D
Я пытаюсь определить 4-мерный тип матрицы в C (для использования в среде iOS/ObjC), который инкапсулируется (а не в пустой массив), и к которому можно получить доступ, используя индексированные значения или через именованные члены структуры. Это моя попытка:
typedef union {
float m[16];
struct {
struct {
float x;
float y;
float z;
float w;
} x;
struct {
float x;
float y;
float z;
float w;
} y;
struct {
float x;
float y;
float z;
float w;
} z;
struct {
float x;
float y;
float z;
float w;
} w;
}; // warning here "Declaration does not declare anything"
} Matrix4;
Это работает, но я получаю предупреждение из-за анонимной (неназванной) структуры. Я, очевидно, не хочу называть эту контейнерную структуру, поскольку она служит только для хранения четырех внутренних структур.
Эта страница подразумевает, что я должен быть в состоянии сделать это? http://gcc.gnu.org/onlinedocs/gcc/Unnamed-Fields.html
Кажется, что на самом деле работает, так что это неправильно, или, если нет, как мне избавиться от предупреждения?
Я использую LLVM GCC 4.2.
Спасибо за любые идеи или предложения.
1 ответ
Анонимные структуры и союзы теперь разрешены (по состоянию на C11). Ваши заботы со временем исчезнут, когда вы перейдете на новый компилятор. В GCC добавить -std=c1x
,