宏定义__attribute__
__attribute__
作用,GCC和Clang等编译器对代码优化、检查函数或参数、对齐的工具等。
基本语法
一般来说,__attribute__
的语法如下:__attribute__((attribute_list))
其中,attribute_list
是一个或多个用逗号分隔的属性。
常见的属性
以下是一些常见的__attribute__
属性及其用法:
-
deprecated:标记函数或变量为已废弃,编译器会在使用时发出警告。
int old_function() __attribute__((deprecated));
-
unused:标记变量或函数未使用,编译器会在未使用时发出警告。
int unused_variable __attribute__((unused));
-
packed:指定结构体或联合体的成员按照最小字节对齐。
struct __attribute__((packed)) packed_struct { char c; int i; };
可用于联合体的数据解包。 -
aligned:指定变量或类型的对齐方式。
int aligned_variable __attribute__((aligned(16)));
-
section:指定变量或函数存放在特定的段(section)中。
int variable __attribute__((section(".mysection")));
可用来嵌入式指定变量烧录位置,需要修改连接脚本文件.ld
-
constructor 和 destructor:指定函数作为构造函数或析构函数在程序开始或结束时自动执行。
void my_constructor() __attribute__((constructor)); void my_destructor() __attribute__((destructor));
-
weak:标记变量或函数为弱符号,允许多个同名符号存在于不同的目标文件中。
int weak_variable __attribute__((weak));``void weak_function() __attribute__((weak));
注意事项
__attribute__
是GCC和Clang的扩展,不属于C++标准,因此不同编译器可能有不同的扩展支持和语法。- 使用
__attribute__
时,应当仔细检查编译器文档,确保了解属性的行为和支持情况。 - 在一些情况下,可以使用
#pragma
指令来达到类似的效果,但是__attribute__
通常提供了更细粒度的控制和更好的可移植性。
总体来说,__attribute__
是一种强大的工具,可以帮助优化代码、提供编译时的额外信息以及实现特定的编译器行为。
关于作者:赤诚Xie
版权声明:本博客所有文章仅用于学习、交流和研究目的,欢迎转载,但请注明原文作者及出处。
奥里给!:若您觉得文章对您有帮助,请点赞、关注支持我吧😊。
药药切克闹,👇👇👇下面三连来一套(●'◡'●)
——励志作一个用单片机梳头的乖宝宝
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理