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__机制的使用的主要内容,如果未能解决你的问题,请参考以下文章

C 语言编程 — GCC Attribute 语法扩展

C 语言编程 — GCC Attribute 语法扩展

C语言中的__attribute__宏定义之section属性

C语言再学习 -- __attribute__详解

C语言__attribute__使用

C语言的定义问题,关于__attribute__的用法,望大家帮忙解答