【发布时间】:2011-10-30 15:58:15
【问题描述】:
假设我在 C 代码中有类似的东西。我知道您可以改用#define 来使编译器不编译它,但出于好奇,我问编译器是否也会解决这个问题。
我认为这对 Java Compiler 更为重要,因为它不支持 #define。
const int CONDITION = 0;
........
// Will the compiler compile this?
if ( CONDITION )
{
}
.......
【问题讨论】:
-
你为什么不试试看,看看生成的二进制文件?
-
具体来说,您可以在您的 Class 上使用 javap -c 命令打印出字节码,这实际上很容易阅读。 download.oracle.com/javase/1,5.0/docs/tooldocs/windows/…
-
我记得看到
if (false) { ... }是在 Java 中排除代码的推荐方式,就像 C 预处理器中的#if。那是几年前的事了。 -
@Joe 我从不理解这种吸引力。在任何现代 IDE 上,注释掉几行代码都比编写 if() 更快,而且更清晰。可怕的习惯 imo - 只有在手头没有好的 IDE 时才需要。
-
@Voo - 如果您有很多应该一起禁用的块,可能分布在所有类中怎么办?仅仅改变一个常数的值肯定会更快,更不容易出错。 (但我也不喜欢这个主意)
标签: java c optimization