表达式总是返回true(编译器不知道)

时间:2010-08-16 12:54:18

标签: debugging

在进行实验时,我经常使用if (true) {..}if (false) {..}来分割我正在玩的代码块。

问题是这些天的编译器有时会发出关于无法访问的代码的警告。然后我必须将我的代码推广到像if ((10 % 2) == 0)这样的东西,但是后来一些更聪明的编译器也将其视为无法访问...(因此小型军备竞赛开始......)

如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

尝试使用预处理器标志将其移出代码:

#if false 
    .... code which won't get run ....
#endif

有些IDE甚至会崩溃这些不可运行的块,以防止它们被挡住。

答案 1 :(得分:1)

为什么不使用某种“环境变量”来控制这种事情呢?使它成为一个有条件的条件,然后你就不会与编译器作斗争。

if ( environment.MODE_EXPERIMENT) {
     experimental code here
}

我个人非常努力避免做这种事情,我们有SCM系统允许我们保留旧版本的代码,真的不需要这么做。

答案 2 :(得分:1)

这应该做:

if (atoi("1")) {
}

这对于生成任何类型的常量也很有用。

答案 3 :(得分:0)

几乎每种语言都有if(false) { }版本,编译器/ IDE不会抱怨。最常见的(afaik)如下所示:

/*
    int i = 0;
    String s = "I will never be run!";
*/

是的,评论。确切地说是多行注释。停止运行代码块几乎是他们的第二个主要目的(在文档之后)。当然,if(true)是通过不使用它们来处理的。

你试图在这里重新发明轮子,我不明白为什么。