2010-12-08 20 views
11

私はgccの__attribute__ ((aligned))についての情報をgoogledして、その属性の使い方について学んでいます。ここで、__attribute__((aligned))をtypedef:ed構造体に置きます。

GNU「typedef宣言で、または完全な列挙型、構造体または共用体の型定義の終わりの中括弧の直後に、整列された属性とtransparent_union属性を指定できます。 "さらに、このドキュメントは次の例を示しています。

struct S { short f[3]; } __attribute__ ((aligned (8))); 

しかし、私は "typedef struct"でいくつかの例を見つけました。私が見つかりました。2次

好ましい方法である
typedef struct __attribute__ ((aligned)) { char a; int x; } foo; 
typedef struct { char a; int x; } __attribute__ ((aligned)) foo; 

:属性は構造体の後と}後とfooの前{、または属性の前に?

両方とも同じ結果を返しますか?

typedef:ed構造体を使用して、__attribute__ ((aligned))の正しい使用法に関する追加の詳細を非常に感謝します。 GCC docから

答えて

9

:列挙型、構造体または共用タイプの場合

、あなた はどちらか 間の属性を指定することが列挙型、構造体または共用体タグとタイプの 名前、または単に過去 定義の中括弧を閉じます。 前者の構文は、が好ましい。

関連する問題