XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_attribute

编译器属性。用于屏蔽不同编译器属性的区别。 更多...

xf_attribute 的协作图:

宏定义

#define __weak   __attribute__((weak))
 弱声明符号。 被 __weak 修饰的符号(变量或函数) 可以被 没有 用 __weak 修饰的符号覆盖或重定义。
 
#define __used   __attribute__((used))
 编辑器不会优化掉被 __used 修饰的符号, 即使在代码中即使没有使用到该符号。
 
#define __aligned(x)   __attribute__((aligned(x)))
 指定变量或结构体的对齐方式(单位字节)。
 
#define __section(x)   __attribute__((section(x)))
 指定函数或变量的段位置,如 data 或 bss。
 
#define likely(x)   __builtin_expect(!!(x), 1)
 分支预测,优化条件为 的可能性更大的情况。
 
#define unlikely(x)   __builtin_expect(!!(x), 0)
 分支预测,优化条件为 的可能性更大的情况。
 
#define __packed   __attribute__((packed))
 取消结构体在编译过程中的优化对齐,按照实际占用字节数进行对齐。
 

详细描述

编译器属性。用于屏蔽不同编译器属性的区别。

宏定义说明

◆ __weak

#define __weak   __attribute__((weak))

弱声明符号。 被 __weak 修饰的符号(变量或函数) 可以被 没有 用 __weak 修饰的符号覆盖或重定义。

参见
https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html
注解
此部分是基于gnu的拓展属性,使用时务必考虑如果编译器无法支持gnu特性情况

在文件 xf_attr.h48 行定义.

◆ __used

#define __used   __attribute__((used))

编辑器不会优化掉被 __used 修饰的符号, 即使在代码中即使没有使用到该符号。

在文件 xf_attr.h60 行定义.

◆ __aligned

#define __aligned (   x)    __attribute__((aligned(x)))

指定变量或结构体的对齐方式(单位字节)。

参数
x对齐到的字节数。

在文件 xf_attr.h73 行定义.

◆ __section

#define __section (   x)    __attribute__((section(x)))

指定函数或变量的段位置,如 data 或 bss。

参数
x目标段名。

在文件 xf_attr.h87 行定义.

◆ likely

#define likely (   x)    __builtin_expect(!!(x), 1)

分支预测,优化条件为 的可能性更大的情况。

参数
x判断语句,且真的可能性更大。

在文件 xf_attr.h100 行定义.

◆ unlikely

#define unlikely (   x)    __builtin_expect(!!(x), 0)

分支预测,优化条件为 的可能性更大的情况。

参数
x判断语句,且假的可能性更大。

在文件 xf_attr.h113 行定义.

◆ __packed

#define __packed   __attribute__((packed))

取消结构体在编译过程中的优化对齐,按照实际占用字节数进行对齐。

在文件 xf_attr.h124 行定义.