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

这篇具有很好参考价值的文章主要介绍了C++之GNU C的__attribute__常用属性(一百五十)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

C++之GNU C的__attribute__常用属性(一百五十),C++入门系列,c++,gnu,c语言

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编译器下进行编译的。文章来源地址https://www.toymoban.com/news/detail-532362.html

到了这里,关于C++之GNU C的__attribute__常用属性(一百五十)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一百五十二、Kettle——Kettle9.3.0本地连接Hive3.1.2(踩坑,亲测有效)

    由于先前使用的kettle8.2版本在Linux上安装后,创建共享资源库点击connect时页面为空,后来采用如下方法,在/opt/install/data-integration/ui/menubar.xul文件里添加如下代码 menuitem id=\\\"file-openZiyuanku\\\" label=\\\"openZiyuanku\\\" command=\\\"spoon.openRepository()\\\"/ 共享资源库创建后又遇到任务Save时为空的问题。

    2024年02月13日
    浏览(10)
  • npm之报错:npm WARN deprecated @npmcli/move-file@2.0.1(一百五十九)

    1.报错: npm WARN deprecated @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fs 2.解决

    2024年02月11日
    浏览(16)
  • 一百五十二、Kettle——Kettle9.3.0本地连接Hive3.1.2(踩坑,亲测有效,附截图)

    由于先前使用的kettle8.2版本在Linux上安装后,创建共享资源库点击connect时页面为空,后来采用如下方法,在/opt/install/data-integration/ui/menubar.xul文件里添加如下代码 menuitem id=\\\"file-openZiyuanku\\\" label=\\\"openZiyuanku\\\" command=\\\"spoon.openRepository()\\\"/ 共享资源库创建后又遇到任务Save时为空的问题。

    2024年02月12日
    浏览(12)
  • 一百五十一、Kettle——Linux上安装的kettle8.2开启carte服务以及配置子服务器

    kettle8.2在Linux上安装好可以启动界面、并且可以连接MySQL、Hive、ClickHouse等数据库后,准备在Linux上启动kettle的carte服务 kettle的Linux运行的carte服务文件是carte.sh 文件路径是/opt/install/data-integration/pwd 1、修改主节点配置文件 [root@hurys22 pwd]# vi  carte-config-master-8080.xml  注意:修改8

    2024年02月13日
    浏览(14)
  • 一百五十六、Kettle——Linux上安装的Kettle9.3连接ClickHouse数据库(亲测,附流程截图)

    kettle9.3在Linux上安装好后,需要与ClickHouse数据库建立连接 1、kettle版本是9.3 2、ClickHouse版本是21.9.5.16   https://pan.baidu.com/s/1iqGyXsTaQSCHEbjj7yX7AA 提取码: mvzd 注意 : clickhouse-plugins文件里就是自定义的clickhouse驱动jar包    注意 : 要区分Linux系统架构是64位还是32位, 它们所属的L

    2024年02月12日
    浏览(14)
  • 一百五十九、Kettle——Kettle9.2通过配置Hadoop clusters连接Hadoop3.1.3(踩坑亲测、附流程截图)

    由于kettle的任务需要用到Hadoop(HDFS),所以就要连接Hadoop服务。 之前使用的是kettle9.3,由于在kettle新官网以及博客百度等渠道实在找不到shims的驱动包,无奈换成了kettle9.2,kettle9.2的安装包里自带了shims的驱动包,不需要额外下载,挺好! kettle9.2.0安装包网盘链接,请看鄙人

    2024年02月12日
    浏览(13)
  • 一百五十三、Kettle——Linux上安装的kettle9.3启动后说缺少libwebkitgtk-1.0(真是坑爹啊,刚龟速下载又忍痛卸载)

    在kettle9.3可以在本地连接hive312后,在Linux中安装了kettle9.3,结果启动时报错WARNING:  no libwebkitgtk-1.0 detected, some features will be unavailable 而且如果直接下载libwebkitgtk的话也没有用 [root@hurys22 data-integration]# yum install install libwebkitgtk   [root@hurys22 data-integration]# wget ftp://ftp.pbone.net/mirr

    2024年02月13日
    浏览(13)
  • 第三百五十三回

    我们在上一章回中介绍了\\\"分享一些好的Flutter站点\\\"相关的内容,本章回中将介绍timezone包.闲话休提,让我们一起Talk Flutter吧。 我们在前面章回中介绍了获取当前时区的内容,本章回将介绍一个与时区相关的包,它虽然不能获取到当前时区,但是可以查看所有的时区,而且可以

    2024年02月20日
    浏览(10)
  • 程序设计c++入门一百题(1-55)

    目录 1.矩阵转置 2.矩阵乘法 3.判断闰年 4.求斐波那契数列的指定一项 5. 进制转换 6.求多项式:1 – 1/2 + 1/3 – 1/4 + … + 1/99 – 1/100 的值。 7.给定一个n个元素的整数数组A,A中连续的相等元素所形成的数据区域称为块,求最大块的长度。(2016)  8.求e的值,e=1+1/1!+1/2!+1/3!+1/4!

    2024年02月15日
    浏览(9)
  • 【前端|CSS系列第2篇】CSS零基础入门之常用样式属性

    欢迎来到CSS零基础入门系列的第二篇博客!作为前端开发的关键技术之一,CSS(层叠样式表)能够为网页添加各种样式和布局效果。对于前端零基础的小白来说,了解和掌握CSS的常用样式属性是入门的关键。本篇博客将带你深入了解如何设置常用样式属性,包括文本属性、字

    2024年02月11日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包