为了实现兼容,编译器会实现由 __attribute__ (( keyword)) 或 [[ keyword]] 调用的以下属性:
|
always_inline-等效于 #pragma inline 和 -xinline |
|
noinline-等效于 #pragma no_inline 和 -xinline |
|
pure-等效于 #pragma does_not_write_global_data |
|
const-等效于 #pragma no_side_effect |
|
malloc-等效于 #pragma returns_new_memory |
|
constructor-等效于 #pragma init |
|
destructor-等效于 #pragma fini |
|
weak-等效于 #pragma weak |
|
noreturn-等效于 #pragma does_not_return |
|
visibility |
|
returns_twice |
|
packed - 请参见下文 |
|
atomic |
|
outer |
|
relaxed |
|
mode |
|
aligned |
|
strong |
此属性附加于 struct 或 union 类型定义中,它指定结构或联合的每个成员(除了零宽度位字段)的放置,以最大限度地减小所需内存。附加于 enum 定义时,此属性指示应使用最小的整数类型。
为 struct 和 union 类型指定此属性等效于对每个结构或联合成员指定 packed 属性。
在以下示例中,struct my_packed_struct 的成员紧紧打包在一起,但其成员的内部布局并不打包。为此,还需要打包 struct my_unpacked_struct。
struct my_unpacked_struct
{
char c;
int i;
;
struct __attribute__ ((__packed__)) my_packed_struct
{
char c;
int i;
struct my_unpacked_struct s;
};
|
只能对 enum、struct 或 union 的定义指定此属性,不能对未定义枚举类型、结构或联合的 typedef 指定此属性。