Applies ToVisual Studio Professional 2010 Visual Studio Ultimate 2010 Visual Studio Premium 2010 Visual Studio Test Professional 2010

簡介

本文所描述的 hotfix 會修正下列問題,Microsoft Visual Studio 2010 中。

問題 1

當您執行應用程式具有在原始程式碼中的迴圈時,您會遇到未預期的行為。如果全域最佳化以編譯的原始程式碼,就會發生這個問題 (/ Og) 啟用。

問題 2

請考慮下列情況:

  • 您有 Visual C++ 的專案包含 Atlcomcli.h 檔案。

  • 您指定了 /J 的編譯器選項,來定義_CHAR_UNSIGNED巨集專案中的。

  • 您編譯專案。

在這個案例中,您會收到下列錯誤訊息之一︰

  • 錯誤 C2338︰ 無法使用 /J 或 _CHAR_UNSIGNED 旗標已啟用編譯 CVarTypeInfo < char >

  • 錯誤 C2338︰ 無法使用 /J 或 _CHAR_UNSIGNED 旗標已啟用編譯 CVarTypeInfo < char * >

問題 3

當您執行建置為 x86 為基礎 Windows 版本的 Visual C++ 的應用程式時,就會發生存取違規。當應用程式必須具有兩個陣列型別輸入引數的運算式樹狀結構時,就會發生這個問題。

原因

造成問題 1

因為不正確的迴圈最佳化會執行,就會發生這個問題。這會導致不正確的程式碼產生。

問題 2 的原因

因為不正確地設定為 [/J 選項和 CHAR_UNSIGNED 巨集 Atlcomcli.h 檔案中的靜態判斷提示,就會發生這個問題。

造成問題 3 的原因

之所以發生這個問題,是因為引數推入指示中的會混。因此,不正確的引數會傳遞至推入的指示。

更多的資訊

Hotfix 資訊

已經可以從 Microsoft 取得支援的 hotfix。不過,其旨在修正本文所述的問題。它只適用於發生此特定問題的系統上。此 hotfix 可能會接受其他測試。因此,如果此問題不會嚴重影響,我們建議您等候下一步的 Visual Studio 2010 包含此 hotfix。若要立即解決這個問題,請連絡 Microsoft 客戶支援服務 」 取得 hotfix。如需 Microsoft 客戶支援服務電話號碼以及支援費用的相關資訊的完整清單,請造訪下列 Microsoft 網站︰

http://support.microsoft.com/contactus/?ws=support注意 在特殊的情況下,如果 Microsoft 支援專業人員認為某特定更新程式可以解決您的問題時,可能就不會收取一般因支援電話所產生的費用。收取支援費用會套用,如果有其他支援問題是,不能限定的特定更新程式。

先決條件

您必須擁有 Microsoft 套用此 hotfix 之後安裝 Visual Studio 2010。

重新啟動需求

您不必重新啟動電腦,如果正在使用不受影響的檔案,套用此 hotfix 之後。

Hotfix 取代資訊

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

檔案資訊

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

檔案名稱

檔案版本

檔案大小

日期

時間

平台

C2.dll

16.0.30319.314

2,510,144

30-May-2010

20:48

x86

C2.dll

16.0.30319.314

2,588,480

30-May-2010

20:48

x86

C2.dll

16.0.30319.314

2,630,976

30-May-2010

20:48

x86

C2.dll

16.0.30319.314

2,977,600

30-May-2010

20:48

x64

C2.dll

16.0.30319.314

7,351,616

30-May-2010

20:48

IA-64

因應措施

因應措施的問題 1

若要解決這個問題,請停用全域最佳化。如需有關如何停用全域最佳化的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文︰

修正216181 ︰ 不正確的程式碼產生 /Og 的最佳化

因應措施的問題 2

若要解決這個問題,請使用下列 pragma 指示詞包含 Atlcomcli.h 檔。

#pragma push_macro("ATLSTATIC_ASSERT")#undef ATLSTATIC_ASSERT#define ATLSTATIC_ASSERT(x,y) #include <atlcomcli.h>#undef ATLSTATIC_ASSERT#pragma pop_macro("ATLSTATIC_ASSERT")

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。