在哪里放置__attribute __((对齐))与typedef:ed struct?

时间:2010-12-08 15:15:39

标签: gcc

我在gcc的__attribute__ ((aligned))上搜索了有关如何使用该属性的详细信息。

根据GNU“您可以在typedef声明中指定aligned和transparent_union属性,或者只是通过完整枚举,结构或联合类型定义的结束大括号,并且仅在定义的右大括号之后指定packed属性。”此外,该文档还显示了以下示例:

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之前的属性?

他们都提供相同的结果吗?

我非常感谢有关使用typedef:ed结构正确使用__attribute__ ((aligned))的任何其他详细信息。

1 个答案:

答案 0 :(得分:9)

来自GCC doc

  

对于枚举,结构或联合类型,您   可以指定之间的属性   枚举,结构或联合标签和   类型的名称,或只是过去的   关闭定义的大括号。   以前的语法是首选