C++之GNU C的__attribute__常用属性(一百五十)

news/2024/11/16 20:46:29/

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:理解GNU C的__attribute__ 所有属性,便于调试开发。

2.应用实例

<1>.在GNU C编译器中,__attribute__是一个非标准的扩展,用于指定函数、变量或类型的属性。这些属性可以用于优化代码、控制警告、指定对齐方式等。下面是GNU C的__attribute__的所有属性:

1. __attribute__((aligned(n))):指定变量或类型的对齐方式为n字节。n必须是2的幂,并且不能超过机器的最大对齐值。2. __attribute__((always_inline)):指定函数总是内联展开,即使编译器认为不合适也会强制内联展开。3. __attribute__((cold)):指定函数是冷函数,即很少被执行的函数。这个属性可以用于优化代码,例如将冷函数放在不常访问的内存区域。4. __attribute__((deprecated)):指定函数或类型已经过时。这个属性可以用于告诉用户不再推荐使用某个函数或类型,并生成相应的警告。5. __attribute__((format(printf, m, n))):指定函数的参数和返回值按照printf风格进行格式化。这个属性可以用于检查函数调用时的参数类型和格式是否匹配。6. __attribute__((hot)):指定函数是热函数,即经常被执行的函数。这个属性可以用于优化代码,例如将热函数放在高速缓存中。7. __attribute__((malloc)):指定函数返回的指针是动态分配的内存。这个属性可以用于告诉编译器对函数返回的指针进行内存管理的优化。8. __attribute__((noreturn)):指定函数不会返回。这个属性可以用于告诉编译器在函数调用后不需要生成返回代码,从而优化代码。9. __attribute__((packed)):指定结构体或联合体的紧凑对齐方式,取消默认的对齐方式。这样可以减小结构体或联合体的大小,但可能会影响访问效率。10. __attribute__((pure)):指定函数没有副作用,即函数的返回值只依赖于输入参数,不依赖于全局变量或静态变量。11. __attribute__((section("name"))):指定变量或函数存储在指定的段(section)中。这个属性可以用于将特定的变量或函数放在特定的内存区域。12. __attribute__((unused)):指定变量或函数未使用。这个属性可以用于抑制编译器产生的未使用变量或函数的警告。13. __attribute__((used)):指定变量或函数被使用。这个属性可以用于告诉编译器即使变量或函数没有被显式引用,也不要将其优化掉。

GNU C的__attribute__的所有属性,可以根据需要在代码中使用。请注意,__attribute__是GNU C的扩展,可能不被其他编译器支持。在使用这些属性时,请确保你的代码是在GNU C编译器下进行编译的。


http://www.ppmy.cn/news/696560.html

相关文章

【JUC-6】AQS介绍,基于AQS实现自己的锁

什么是AQS AbstractQueuedSynchronizer(抽象队列同步器&#xff0c;简称AQS)出现在JDK 1.5中。AQS是很多同步器的基础框架&#xff0c;比如ReentrantLock、CountDownLatch和Semaphore等都是基于AQS实现的。除此之外&#xff0c;我们还可以基于AQS&#xff0c;定制出我们所需要…

OPA2376AIDGKR

OPA2376AIDGKR 规格 产品属性 制造商:Texas Instruments 产品种类:精密放大器 RoHS: 详细信息 系列:OPA2376 通道数量:2 Channel GBP-增益带宽产品:5.5 MHz SR - 转换速率 :2 V/us CMRR - 共模抑制比:90 dB 每个通道的输出电流:50 mA Ib - 输入偏流:0.2 pA Vos - 输入偏置电压 …

核芯国产高压运放CLA4031/ CLA4032

核芯互联发布高压宽带运放CLA4031&#xff08;单通道&#xff09;和CLA4032&#xff08;双通道&#xff09;。CLA403x是超低电压噪声、高速电压反馈放大器&#xff0c;适用于需要低电压噪声的应用&#xff0c;如通信、成像、ADC驱动、压控振荡器等。 CL403X支持1.5V~20V&#…

AH463全极高灵敏低功耗霍尔开关

AH463全极高灵敏低功耗霍尔开关 全极小功耗霍尔开关&#xff0c;推挽式输出&#xff0c;内置上拉电阻&#xff0c;高灵敏度。 霍尔元件AH463是基于CMOS工艺设计和生产的霍尔IC&#xff0c;元件内部集成了霍尔效应片、电压调节器、休眠唤醒控制电路、信号放大滤波电路、偏移补偿…

SP4533芯片

SP4533是TPOWER芯片全新推出的同步充放1A双灯显低成本同步升压五合一芯片&#xff0c;支持充电电流1A , 放电电流1A。双灯显的低成本移动电源终极解决方案. 是一款专为移动电话设计的同步升压的单芯片解决方案&#xff0c;内部集成了线性充电管理模块&#xff0c;同步放电管理…

MSP430FG479芯片的 IAP

MSP430以一款TI出品的16位超低功耗、具有精简指令集&#xff08;RISC&#xff09;的混合信号处理器&#xff0c;优点就是低功耗&#xff0c;运算快。在公司内用在一款开发中的低功耗传感器上&#xff0c;主要开发人员出国旅游一段时间&#xff0c;暂时给我代码熟悉一下&#xf…

MCU ARM 32bit LPC4357FET256 STM32L072CZU6TR PDF技术资料

1、LPC435X/3X/2X/1X是基于ARM Cortex-M4的浮点微控制器。用于嵌入式应用程序的单元(FPU)&#xff0c;包括ARM Cortex-M0协处理器到1mb闪存和136kb片上SRAM, 16kb EEPROM存储器&#xff0c;两个高速USB控制器&#xff0c;以太网&#xff0c;LCD&#xff0c;一个外部内存控制器&…

SUB 1G 无线射频芯片-DP4301

DP4301是一款高性能低功耗的单片集成收发机&#xff0c;工作频率可覆盖200M-1020MHz&#xff0c;支持支持 230/315/408/433/868/915频段。该芯片集成了射频接收器、射频发射器、频率综合器、GFSK调制器、GFSK解调器等功能模块。通过SPI接口可以对输出功率、频道选择以及数据包格…