我在Eclipse中尝试了以下方法:
if (false) {}
while (false) {}
我想知道这种差异是否存在真正的“原因”。我已经找到了…
…但是为什么不允许while (false)相同的调试目的?
while (false)
在上可达代码JLS部分解释了理由。本质上,Java通常不应该像C常规那样使用条件编译#ifdef,但是在某些情况下(例如调试,尤其是向后二进制兼容性),需要允许编译器完全剥离代码,因此特定的结构if(false)为此被允许。
#ifdef
if(false)