2010-12-08 27 views
11

我已使用gcc的__attribute__ ((aligned))的Google信息瞭解如何使用該屬性的更多信息。何處放置__attribute__((對齊))與typedef:ed結構?

根據GNU「你可以在typedef聲明中指定aligned和transparent_union屬性,或者只是通過完整的枚舉,結構體或聯合體類型定義的閉括號大括號,而壓縮屬性只能通過定義的大括號。 「此外,該文檔顯示了以下示例:

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

但是我發現了幾個「typedef struct」示例。我發現有以下兩種:

typedef struct __attribute__ ((aligned)) { char a; int x; } foo; 
typedef struct { char a; int x; } __attribute__ ((aligned)) foo; 

哪個是優選的方法:屬性後struct和{,或}後和Foo之前​​屬性之前?

它們是否都提供相同的結果?

我將非常感謝關於__attribute__ ((aligned))正確使用typedef:ed結構的任何其他詳細信息。

回答

9

GCC doc

對於enum,struct或union類型,你 既可以 之間指定屬性的枚舉,結構或聯合標記和類型的 名稱,或者剛剛過去的 關閉定義的大括號。 以前的語法是首選