2010-08-16 47 views
0

試驗時,我經常使用if (true) {..}if (false) {..}來區分我正在玩的代碼塊。總是返回true的表達式(並且編譯器不知道)

問題是,現在編譯器有時會發出關於無法訪問的代碼的警告。然後,我要宣傳我的代碼,類似if ((10 % 2) == 0),但後來一些聰明的編譯器捕獲此爲不可達也。(所以小軍備競賽開始..)

我該如何解決這個問題?

+0

@martijn:這個問題看起來不錯。我編輯它以刪除「列出所有的東西」。 – 2013-11-08 17:24:47

+0

@RobertHarvey:檢查;沒有列表請求,這確實沒問題。投票撤回。 – 2013-11-08 17:27:55

+0

@RobertHarvey:但是現在這是什麼語言? C? – 2013-11-08 17:28:44

回答

1

爲什麼不僅僅使用某種「環境變量」來控制這種事情呢?讓它成爲一個reall條件,然後你不打擊編譯器。

if (environment.MODE_EXPERIMENT) { 
    experimental code here 
} 

個人而言,我嘗試非常難以避免做這種事情,我們有單片機系統,使我們能夠保持代碼的舊版本,真的不應該需要做的太多了。

1

這應該這樣做:

if (atoi("1")) { 
} 

這也可以生成任何類型的常數是有用的。

2

嘗試移動它的代碼,使用預處理器標誌:

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

有些IDE甚至會塌縮,未運行的塊你對他們保持的方式進行。

0

幾乎每一種語言都有編譯器/ IDE不會抱怨的版本if(false) { }。最常見的(afaik)如下所示:

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

是的,評論。準確地說,多行評論。停止運行代碼塊幾乎是它們的第二個主要目的(在文檔之後)。當然,if(true)然後通過不使用它們來處理。

你正試圖在這裏重新發明輪子,我不知道爲什麼。