試驗時,我經常使用if (true) {..}
或if (false) {..}
來區分我正在玩的代碼塊。總是返回true的表達式(並且編譯器不知道)
問題是,現在編譯器有時會發出關於無法訪問的代碼的警告。然後,我要宣傳我的代碼,類似if ((10 % 2) == 0)
,但後來一些聰明的編譯器捕獲此爲不可達也。(所以小軍備競賽開始..)
我該如何解決這個問題?
試驗時,我經常使用if (true) {..}
或if (false) {..}
來區分我正在玩的代碼塊。總是返回true的表達式(並且編譯器不知道)
問題是,現在編譯器有時會發出關於無法訪問的代碼的警告。然後,我要宣傳我的代碼,類似if ((10 % 2) == 0)
,但後來一些聰明的編譯器捕獲此爲不可達也。(所以小軍備競賽開始..)
我該如何解決這個問題?
爲什麼不僅僅使用某種「環境變量」來控制這種事情呢?讓它成爲一個reall條件,然後你不打擊編譯器。
if (environment.MODE_EXPERIMENT) {
experimental code here
}
個人而言,我嘗試非常難以避免做這種事情,我們有單片機系統,使我們能夠保持代碼的舊版本,真的不應該需要做的太多了。
這應該這樣做:
if (atoi("1")) {
}
這也可以生成任何類型的常數是有用的。
嘗試移動它的代碼,使用預處理器標誌:
#if false
.... code which won't get run ....
#endif
有些IDE甚至會塌縮,未運行的塊你對他們保持的方式進行。
幾乎每一種語言都有編譯器/ IDE不會抱怨的版本if(false) { }
。最常見的(afaik)如下所示:
/*
int i = 0;
String s = "I will never be run!";
*/
是的,評論。準確地說,多行評論。停止運行代碼塊幾乎是它們的第二個主要目的(在文檔之後)。當然,if(true)
然後通過不使用它們來處理。
你正試圖在這裏重新發明輪子,我不知道爲什麼。
@martijn:這個問題看起來不錯。我編輯它以刪除「列出所有的東西」。 – 2013-11-08 17:24:47
@RobertHarvey:檢查;沒有列表請求,這確實沒問題。投票撤回。 – 2013-11-08 17:27:55
@RobertHarvey:但是現在這是什麼語言? C? – 2013-11-08 17:28:44