狀況

當您建置應用程式是在 x64 設定時,會使用/Ot (偏好快的程式碼)編譯器選項在 Microsoft Visual Studio 2005 Service Pack 1 (SP1) 中的平台。當您執行應用程式時,某些if陳述式可能無法正確地執行。因此,結果是無法預期的。例如, if陳述式可能會略過的應用程式產生的程式碼。

下列情況中才會發生這個問題。

  • 有兩個比較作業之間有些 MOV 指令。

  • 這些比較作業使用相同的運算元。

  • 運算元的值會變更 MOV 指示。

在這個案例中,第二個比較作業中的if陳述式可能會略過。

注意事項

  • 當您建置應用程式使用/O2選項或/Ox選項時,也可能會發生這個問題。

  • 不會發生這個問題,這是在 x86 平台。

原因

之所以發生這個問題,是因為編譯器最佳化器不正確假設由 XOR 運算所設定的旗標可以不用包括比較作業。

解決方案

Hotfix 資訊

支援的 hotfix 可從 Microsoft 取得。不過,此 Hotfix 僅用於修正本文中所述的問題。此 hotfix 只適用於發生本文所述之問題的系統。此 hotfix 可能會接受其他測試。因此,如果此問題的影響不會很嚴重,我們建議您等候含此 hotfix 的下一版軟體更新。

如果 hotfix 可供下載,在此知識庫文件頂端將出現「可用的 Hotfix」區段。如果這個區段沒有出現,請連絡 Microsoft 客戶服務及支援以取得 hotfix。

注意如果發生其他問題,或如果需要進行疑難排解,您可能必須建立個別的服務要求。收取支援費用會套用到其他支援問題和此特定 hotfix 無法解決的問題。如 Microsoft 客戶服務及支援的電話號碼或建立個別的服務要求的完整清單,請造訪下列 Microsoft 網站︰

http://support.microsoft.com/contactus/?ws=support注意「 下載 Hotfix 」 表單會顯示 hotfix 可用的語言。如果看不到您的語言,是因為未提供該語言的 Hotfix 。

先決條件

您必須套用此 hotfix 之後安裝 Visual Studio 2005 SP 1。

重新啟動需求

您不必套用此 hotfix 之後,重新啟動電腦。

Hotfix 取代資訊

此 hotfix 不會取代任何其他 hotfix。

檔案資訊

此 hotfix 的英文版具有下列表格中所列檔案屬性 (或較新的檔案屬性)。這些檔案的日期和時間會以國際標準時間 (UTC) 格式列出。當您檢視檔案資訊時,會將它轉換為本地時間。若要查看 UTC 與當地時間的時差,請在 [控制台] 中的日期和時間項目使用 [時區] 索引標籤。

檔案名稱

檔案版本

檔案大小

日期

時間

平台

C2.dll

14.0.50727.3080

2,273,280

2008 年 11 月 19 日

18:52

x86

C2.dll

14.0.50727.3080

7,192,576

2008 年 11 月 19 日

23:25

IA-64

C2.dll

14.0.50727.3080

2,490,368

2008 年 11 月 19 日

23:26

x86

C2.dll

14.0.50727.3080

3,600,384

2008 年 11 月 19 日

23:33

x64

C2.dll

14.0.50727.3080

2,203,648

2008 年 11 月 19 日

23:33

x86

因應措施

若要解決這個問題,請使用下列方法之一︰

  • 當您宣告的if陳述式中所使用的變數時,請使用 volatile 關鍵字。

  • 停用的速度最佳化] 選項。例如, /Ot選項取代/Os (偏好小的程式碼) ] 選項。或者,您也可以使用 [ /O1 ] 選項,而不是/O2選項或/Ox選項。

  • If陳述式,在第二個比較作業之前,請加入程式碼行。例如,加入printf陳述式。

狀態

Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。

更多的資訊

如需有關一或多個程式碼陳述式可能無法正確地執行,當您使用 Visual Studio 2005年中的程式碼最佳化的功能,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件︰

925792一或多個程式碼陳述式可能無法正確地執行當您使用 Visual Studio 2005年中的程式碼最佳化的功能

如需有關軟體更新術語的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

用來描述 Microsoft 軟體更新標準術語的編號 824684描述

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×