根据gnu
(https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Function-Attributes.html),noclone属性定义为:
此函数属性阻止将函数考虑用于克隆 - 一种生成函数的专用副本并且(当前)通过过程间常量传播执行的机制。
上面的定义是什么意思当和哪里我们应该使用这个函数属性?
答案 0 :(得分:4)
我知道这个属性的两个用例,两者都非常特定于gcc。这些是:
如果您获取标签的地址(GNU扩展名),则地址将为 如果函数体是,则函数特化之间有所不同 克隆。如果您希望地址可以使用该属性 同样。
__builtin_return_address
可能会返回不同的返回地址,而没有克隆则会返回相同的地址。
我建议不要使用此属性,让优化器完成它的工作。