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

P. *_*ing 13 gcc

我在google上搜索了gcc的信息,__attribute__ ((aligned))以了解有关如何使用该属性的更多信息.

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

struct S { short f[3]; } __attribute__ ((aligned (8)));
Run Code Online (Sandbox Code Playgroud)

但我发现"typedef struct"的例子很少.我找到了以下两个:

typedef struct __attribute__ ((aligned)) { char a; int x; } foo;
typedef struct { char a; int x; } __attribute__ ((aligned)) foo;
Run Code Online (Sandbox Code Playgroud)

哪个是首选方法:在struct之前的{属性}和之前的属性,或foo 之后和之前的属性?

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

关于使用__attribute__ ((aligned))typedef:ed结构的正确用法,我将非常感谢.

F'x*_*F'x 9

来自海湾合作委员会文件:

对于枚举,结构或联合类型,您可以在枚举,结构或联合标记与类型名称之间指定属性,或者仅在定义的结束大括号之后指定属性. 前一种语法是首选.