0

カプセル化された(裸の配列ではない)Cで(iOS / ObjC環境で使用するための)4次元行列型を定義しようとしています。これは、インデックス値または名前付き構造体メンバーを介してアクセスできます。これは私の試みです:

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;

これは機能しますが、匿名の(名前のない)構造体が原因で警告が表示されます。コンテナ構造体は4つの内部構造体を保持するためだけに機能するため、この名前を付けたくないのは明らかです。

このページは、私がこれを行うことができるはずだということを意味しますか? http://gcc.gnu.org/onlinedocs/gcc/Unnamed-Fields.html#Unnamed-Fields

実際に機能しているようですが、これは間違っていますか、そうでない場合は、警告をどのように取り除く必要がありますか?

LLVMGCC4.2を使用しています。

洞察や提案をありがとう。

4

1 に答える 1

1

匿名の構造体と共用体が許可されるようになりました (C11 以降)。新しいコンパイラに移行すると、心配は最終的に解消されます。GCC で、 を追加し-std=c1xます。

于 2012-02-04T01:03:30.787 に答える