首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >常用的gcc的__attribute__

常用的gcc的__attribute__

原创
作者头像
mariolu
修改于 2021-03-28 16:44:13
修改于 2021-03-28 16:44:13
2.2K0
举报

当我学习brpc。浏览代码,查看许多“ __attribute__使用过的地方”。

我在想在什么情况下使用什么“ __attribute__”?恰当使用__attribute编码可以提高程序的效率。 据我调查,这是一些例子。

  • __attribute __(noinline):防止考虑将函数内联
  • __attribute __(packed):指定放置结构或联合的每个成员以最大程度地减少所需的内存。该packed属性指定结构成员应具有尽可能小的对齐方式
  • __attribute __(unused):通知编译器您期望变量未使用,并告诉它如果不使用它不要发出警告
  • __attribute __(weak):定义可以在用户代码中覆盖的库函数
  • __attribute __(format):由printf使用并指出哪些args具有格式
  • __ attribute __(const):该函数不读取或修改任何全局内存
  • __attribute __(aligned(X)):增加结构或结构成员的对齐方式。最小对齐方式,以字节为单位。不能使用此属性来减少函数的对齐方式,而只能增加它的对齐方式。
  • __attribute __(unused):附加到变量的此属性意味着该变量可能未被使用。GCC不会对此变量发出警告。
  • __attribute __(always_inline):通常,除非指定优化,否则函数不会内联。对于内联声明的函数,即使未指定优化级别,此属性也会内联函数。
  • __attribute __(deprecated):如果在源文件中的任何位置使用该变量,则该属性将产生警告。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iOS_ __attribute__
__attribute__ 编译器属性机制,用于向编译器描述特殊得标识、检查或优化。 语法关键字是__attribute__紧跟2套圆括号,括号内是一个以逗号分隔的属性列表。 __attribute__指令被放在类前、函数/变量声明后面。
mikimo
2023/10/18
4270
__attribute__机制介绍
__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)
阳光岛主
2019/02/19
3.1K0
HERD--GCC宏
减少跳转语句失效时CPU等待取指令时间,提高CPU效率 使用__builtin_expect(EXP,N) 意思是EXP==N的概率很大 一般封装为LIKELY和UNLIKELY宏 #define LIKELY(x) __builtin_expect(!!(x),1) 很可能为真 #define UNLIKELY(x) __builtin_expect(!!(x),0) 很可能为假 编译器会利用编程人员做出的判断来生成高效代码 ----------------------------------------
昊楠Hacking
2018/03/08
6960
iOS 编译器__Attribute__的入门指南
作者:小朋鸟 一、Attribute Attribute 是 GNU C 的一大特色。 所以这对于iOS来说这是一个什么东西? 这是一个可以给对象或函数声明特性的编译器指令,目的是让编译器做更多的错误检查和优化。 可设置函数属性(Function Attribute)、变量属性(Variable Attribute)、类型属性(Type Attribute) Swift 文档中的说明: Attributes provide more information about a declaration or ty
37手游iOS技术运营团队
2021/12/31
1K0
iOS 编译器__Attribute__的入门指南
编译器特性 _attribute__((packed))
从BLE(低功耗蓝牙)设备上收到数据(16进制的数据流),<840100ec d5045715 00010014 00240018 00>,17个bytes(字节),然后我定义了一个结构体去接数据:
iOS Development
2019/02/14
2.7K0
Linux GNU C 和 ANSI C 的区别
Linux 上可用的 C 编译器是 GNU C 编译器,它建立在自由软件基金会的编程许可证的基础上,因此可以自由发布。GNU C对标准C进行一系列扩展,以增强标准C的功能。
Jasonangel
2021/07/07
5.7K0
C++ 中文周刊 第93期
编译器信息最新动态推荐关注hellogcc公众号 2022-12-14 第180期
王很水
2022/12/31
4470
C++0x 通用属性
C++在不断的发展,但每一阶段的C++标准提供的功能都很难完全满足现实需求,于是为了弥补标准的不足或者扩增特性应用场景所需的特性,各大C++编译器厂商多多少少在标准之外都增加了不少有用的扩展功能。这些扩展功能并不在C++的标准中,但是却经常被使用。有时候,C++标准委员会也会考虑这些标准之外的扩增特性,将其纳入标准之中。
恋喵大鲤鱼
2018/09/27
9600
嵌入式笔试面试题目系列(二)
本系列将按类别对题目进行分类整理,重要的地方标上星星,这样有利于大家打下坚实的基础。
Jasonangel
2021/05/28
7660
《C++中属性(Attribute)的深度探秘:提升代码质量与性能的利器》
在 C++的世界里,属性(Attribute)是一个强大却常常被忽视的特性。它为程序员提供了一种向编译器传达额外信息的方式,能够在代码的可读性、可维护性以及性能优化等方面发挥重要作用。随着 C++标准的不断演进,属性的种类也日益丰富。本文将深入探讨 C++中常见的属性及其应用场景。
程序员阿伟
2024/12/09
2160
iOS小技能:__attribute__的应用
LLVM和其他 GCC 特性一样,Clang 支持了 __attribute__, 还加入了一小部分扩展特性。
公众号iOS逆向
2022/08/22
3870
iOS小技能:__attribute__的应用
谈谈C++新标准带来的属性(Attribute)
从C++11开始,标准引入了一个新概念“属性(attribute)”,本文将简单介绍一下目前在C++标准中已经添加的各个属性以及常用属性的具体应用。
C语言与CPP编程
2021/07/27
7330
谈谈C++新标准带来的属性(Attribute)
Kotlin基础之内联函数
内联函数 使用高阶函数会给运行时带来一些坏处:每个函数都是一个对象,捕获闭包(如:访问函数体内的变量),内存分配(函数对象或Class),虚拟调用引入的运行过载。 使用内联Lambda表达式在多数情况下可以消除这种过载。比如下面的函数就是这种情况下的很好的例子,lock()函数可以很容易地在调用点进行内联扩展。 lock(l){ foo() } 编译能够产生下面的代码,而不是创建一个函数对象参数,生成调用。 l.lock() try { foo() } finally { l.unlock(
xiangzhihong
2018/02/08
9690
C++11 Lambda表达式与Attributes:从入门到精通
在当今软件开发行业快速发展的背景下,程序员们需要不断提升自己的编程技能,以应对日益复杂的需求。C++作为一种广泛使用的编程语言,其标准也在不断发展和完善。C++11标准的出现,带来了许多令人瞩目的新特性,其中Lambda表达式和Attributes便是两个强大且实用的功能。
码事漫谈
2025/06/17
840
C++11 Lambda表达式与Attributes:从入门到精通
RT-Thread FinSH控制台添加自定义msh命令原理「建议收藏」
FinSH 是 RT-Thread 的命令行组件,提供一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息。它可以使用串口 / 以太网 / USB 等与 PC 机进行通信。
全栈程序员站长
2022/08/31
1.3K0
C 语言的骚操作
如果稍微了解一下其他语言,比方说 Java 就会直到,将 0 强转为一个结构体类型指针,相当于一个空指针,空指针引用,这在 Java 中可是开发的心头大忌。
ge3m0r
2024/08/24
1930
【C】alignment
如果没有深入的了解内存方面的东西, 我们可能会认为内存不过是简单的字节数组, 例如下面的形式 但是实际上, 计算机的处理器并不是以单个字节块为单位读写内存, 而是以2个,4个,8个,甚至16或者32个字节块为单位读写内存,如下图所示 我们将处理器访问内存单元的大小叫做其内存访问的粒度. 知道上面这一点很重要, 这也是C语言alignment的基础.
零式的天空
2022/03/02
3910
[译]C++17, 语言核心层变化的更多细节
在之前的文章中我介绍了一些C++17语言核心层的变化,这次我会介绍更多的相关细节,涉及的主题有:内联变量(inline variables),模板,auto相关的自动类型推导以及属性(attributes).
用户2615200
2022/01/12
8450
[译]C++17, 语言核心层变化的更多细节
属性“__attribute__”在Objective-C中的应用
      关于__attribute__,你可能用的不多,但是一定经常见到,在系统的Foundation框架中,__attribute__的使用非常频繁。首先,__attribute__用于在函数,变量或类型声明时进行特殊属性设置的编译器指令。需要注意,它是一种编译器指令,这也就表明了使用它我们可以做更高级的检查与优化功能。
珲少
2020/04/28
2.6K0
属性“__attribute__”在Objective-C中的应用
C++11 Attributes:从入门到精通
在C++编程的世界里,C++11标准的出现带来了许多令人瞩目的新特性,其中属性(Attributes)便是一个强大且实用的功能。属性为开发者提供了一种向编译器和链接器传递额外元数据的方式,从而能够对代码进行更精细的控制和优化。对于初学者来说,掌握C++11 Attributes不仅可以提升代码的质量和可读性,还能让我们更好地与编译器进行沟通,充分发挥C++语言的潜力。本文将带领大家从基础概念入手,逐步深入了解C++11 Attributes的各种应用场景,帮助大家实现从入门到精通的跨越。
码事漫谈
2025/06/16
1120
C++11 Attributes:从入门到精通
相关推荐
iOS_ __attribute__
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档