gcc unsed和used的作用

GCC编译器在高警告等级下会将未使用的函数视为错误。通过`unused`属性,可以防止未使用函数的警告,而`used`属性确保即使未直接引用,函数代码也会被编译。这两个属性有助于解决编译警告和优化等级导致的变量丢失问题。
摘要由CSDN通过智能技术生成

很多时候我们在编写代码的时候,如果此时编译器检查等级比较高,编译器会将警告视为错误,比如一个函数里有某些变量虽然存在但未使用,那么会报错,同时比如我们将某些变量放入某个段里然后通过指针指向地址来对它进行引用,那么会产生一个问题,如果开启了优化等级,如果这个变量在代码里没有被明确引用那么它可能不会被生成,就导致了指针引用方式出现了NULL的问题。

GCC有一些特性可以解决这两个问题,如下是GCC文档原文:

unused

This attribute, attached to a function, means that the function is meant to be possibly unused. GCC will not produce a warning for this function.

(此属性附加到函数,表示该函数可能未使用。GCC不会对此函数产生警告。)

used

This attribute, attached to a function, means that code must be emitted for the function even if it appears that the function is not referenced. This is useful, for example, when the function is referenced only in inline assembly.

(该属性附加到函数,意味着即使函数似乎未被引用,也必须为该函数发出代码。例如,当函数仅在内联程序集中引用时,这很有用。)

第一个问题可以使用unused属性来解决,第二个问题可以使用used属性来解决

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

17岁boy想当攻城狮

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值