C/C++系列C语言中__attribute__机制的使用
Posted 飞翔的鲲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++系列C语言中__attribute__机制的使用相关的知识,希望对你有一定的参考价值。
DATE: 2021.10.25
1、介绍
GNU C 的一大特色就是__attribute__ 机制。attribute 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。
_attribute_ 语法格式为:__attribute__ ((attribute-list))
2、用法
2.1、设置函数属性
aligned: 指定对象的对齐格式(以字节为单位)
struct pStruct {
short a[3];
} __attribute__ ((aligned (8)));
typedef int int32_t __attribute__ ((aligned (8)));
packed:使用该属性对struct 或者union 类型进行定义,设定其类型的每一个变量的内存约束。就是告诉编译器取消结构在编译过程中的优化对齐(使用1字节对齐),按照实际占用字节数进行对齐,是GCC特有的语法。
struct unpacked_struct
{
char c;
int i;
};
struct packed_struct
{
char c;
int i;
struct unpacked_struct s;
}__attribute__ ((__packed__));
2.2、设置变量属性
aligned:同2.1
packed:同2.1
2.3、设置类型属性
aligned:同2.1
vector_size:设置矢量的个数
示例如下:
typedef unsigned char v16u8 __attribute__ ((vector_size(16), aligned(16)));
THE END!
以上是关于C/C++系列C语言中__attribute__机制的使用的主要内容,如果未能解决你的问题,请参考以下文章