我对 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 中)似乎没有抱怨这种情况,尽管我可能没有在正确的优化级别进行编译或启用了正确的警告。