C __attribute__编译属性整理

本文详细解释了GCC编译属性在VPP源码中的应用,包括unused、packed、aligned、noreturn、constructor/destructor、weak、flatten和section等特性的作用,以及visibility属性对动态库符号可见性的控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

        最近在看VPP源码,很多变量、函数都设置了编译属性,编译属性的作用却不是很明确,为了增加记忆以及方便日后查阅,在此整理并分享给大家。

概念

        __attribute__是GCC的一大特色,attribute机制可以用于设置函数属性(FunctionAttribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)

编译属性及作用

        __attribute__ ((unused)):指示变量或函数可能不会被引用,设置该属性后,变量/函数未引用时可以阻止编译器产生并发出未使用的警告。

        __attribute__((packed)):用于告诉编译器以紧凑的方式对结构体进行内存布局,即不要在结构成员之间插入填充字节,以节省空间,是GCC特有的语法,跟操作系统无关,跟编译器有关。

        __attribute__((aligned(x))):指示编译器以指定字节对齐变量/结构体,以便提高访问速度和效率。

        __attribute__((noreturn)):指示编译器该函数不会返回给调用者,以便在编译器优化的时候去掉不必要的函数返回代码。

        __attribute__((constructor)):指示在程序运行时,在main函数之前执行的初始化函数,用于完成一些特定的初始化工作,如:初始化全局变量,注册回调函数等&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值