__attribute__概述

__attribute__ 关键字允许指定变量、类型和函数的属性

该关键字的格式如下所示


 
  1. __attribute__((attribute1, attribute2, ...))

  2. __attribute__((__attribute1__, __attribute2__, ...))

例如


 
  1. void * Function_Attributes_malloc_0(int b) __attribute__((malloc));

  2. static int b __attribute__((__unused__));

下表总结了函数的属性设置

函数属性                                                     等价表示
__attribute__((alias))                                   
__attribute__((always_inline))                     __forceinline
__attribute__((const))                                   __pure
__attribute__((constructor[(priority)]))          
__attribute__((deprecated))                          
__attribute__((destructor[(priority)]))             
__attribute__((format_arg(string-index)))     
__attribute__((malloc))                                 
__attribute__((noinline))                               __declspec(noinline)
__attribute__((nomerge))                             
__attribute__((nonnull))                               
__attribute__((noreturn))                            __declspec(noreturn))
__attribute__((notailcall))                             
__attribute__((nothrow))                              __declspec(nothrow))
__attribute__((pcs("calling_convention")))    
__attribute__((pure))        
__attribute__((section("name")))    
__attribute__((unused))    
__attribute__((used))    -
__attribute__((visibility("visibility_type")))    
__attribute__((weak))    __weak
__attribute__((weakref("target")))

函数的属性可以在声明的时候指定也可以在定义的时候指定,示例如下


 
  1. void AddGlobals(void) __attribute__((always_inline));

  2. __attribute__((always_inline)) void AddGlobals(void)

  3. {

  4. ...

  5. }

当函数的属性冲突的时候,编译器会选择更加安全或健壮的一个例如

__attribute__((used)) 比  __attribute__((unused)) 安全

__attribute__((noinline)) 比  __attribute__((always_inline)) 安全

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 鲸 设计师: meimeiellie
应支付0元
点击重新获取
扫码支付

支付成功即可阅读