Я пытаюсь определить 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#Unnamed-Fields
Кажется, что на самом деле работает , так что это не так, или если нет, то как мне избавиться от предупреждения?
Я использую LLVM GCC 4.2.
Спасибо за любые идеи и предложения.