【发布时间】:2013-01-17 21:03:30
【问题描述】:
我对 LLVM 4.1 特别好奇,但也会对其他编译器的行为感兴趣。
根据GCC documentation(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 中)似乎没有抱怨这种情况,尽管我可能没有在正确的优化级别或启用正确的警告进行编译。
【问题讨论】:
-
请注意,LLVM (clang) 是一个单独的编译器,它接受一些 GCC 标志以与事实上的标准兼容。
-
是的,更改了我原来帖子中的一些措辞以使其更清晰。
-
@Joe,你的意思是任何编辑都应该是评论吗?
-
@mon4goos 该评论属于一个现已删除的答案,当它被删除时,它将它移到问题上,因此它脱离了上下文。顺便问下好问题。
-
@Joe 谢谢!出于好奇,你是怎么弄明白的?
标签: gcc llvm llvm-gcc llvm-clang