[警告]VS2003 (.NET v1.1) comiler bug

看板C_Sharp作者 (睡魔)時間16年前 (2007/10/18 10:14), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
請看下列的code: public static void Main() { string status = ""; int i = 0; switch (i) { case 0: try { } catch { } finally { status += "Zero"; } break; case 1: status += " ********** OMG **********"; break; } Console.WriteLine(status); } 在Debug mode的執行結果為: Zero 在Release mode的執行結果為: Zero ********** OMG ********** 在拆解產生的執行碼後, 證實為compiler bug: public static void Main() { string str = ""; switch (0) { case 0: str = str + "Zero"; break; case 1: break; default: goto Label_0032; } str = str + " ********** OMG **********"; Label_0032: Console.WriteLine(str); } 由於Microsoft已經宣佈SP1為.NET v1.1的最後一個service pack, 估計 這問題修正的可能性不太. 目前在用.NET v1.1發佈軟體的人, 請在project manager把release build 的optimization關閉. 此bug已確認不存在於.NET v2.0或以上的compiler. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.134.126.84 ※ 編輯: leicheong 來自: 202.134.126.84 (10/18 10:16)

10/19 00:09, , 1F
囧推.... Orz
10/19 00:09, 1F

10/24 01:37, , 2F
這bug怪得有點莫名...
10/24 01:37, 2F
文章代碼(AID): #175i6VLH (C_Sharp)