4

我对 LLVM 4.1 特别好奇,但也会对其他编译器的行为感兴趣。

根据GCC 文档(LLVM 至少部分支持),该unused属性具有以下行为:

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

但是,如果编译器能够警告您未使用的参数和变量,那么它可能已经知道哪些参数和变量是未使用的,而无需您告诉它(特别是因为该unused属性仅指示该变量可能未使用)。因此,该unused属性是否允许编译器执行任何额外的优化,或者它的目的只是为了允许更多可读的代码?此外,如果该unused属性确实允许编译器执行其他优化,那么如果您最终使用指定为的参数或变量会发生什么情况unused?LLVM(在 XCode 中)似乎没有抱怨这种情况,尽管我可能没有在正确的优化级别进行编译或启用了正确的警告。

4

1 回答 1

6

__attribute__((unused))无助于优化,并不意味着该值一定是未使用的。它抑制警告(如果有这个警告的原因,也就是说,如果该值确实未被使用),仅此而已。

于 2013-01-17T21:08:08.140 回答