在 Microsoft Visual Studio 2010 中修正了問題的 hotfix 是可用

簡介

本文所描述的 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")

Need more help?

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

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×