狀況
請考慮下列情況:
-
您在 Microsoft Visual Studio 2008 Service Pack 1 (SP1) 建立 Visual C++ 的專案。
-
專案中的檔案具有窄字串常值。這些字串常值包含亞洲字元,而且不會以字母"L"前置字元
-
字串常值會使用 utf-8 編碼方式。
在這個案例中,當您編譯專案,字串常值會被誤解由編譯器。此外,您會遇到下列問題之一︰
-
編譯作業成功。不過,在產生的應用程式時沒有正確顯示的字串常值。此外,您也可能會收到下列警告訊息,當您編譯專案︰
警告 C4566︰ 通用字元名稱 'xx' 所表示的字元無法在目前的字碼頁中。
-
編譯作業會失敗。此外,您可能會在當您編譯專案時,收到下列錯誤訊息︰
錯誤 C2078︰ 太多的初始設定式
原因
因為編譯器會假設 < 徵狀=""> 一節中的檔案具有 MBCS 編碼方式,就會發生這個問題。由於這種行為,compilerincorrectly 會將轉譯的檔案。
解決方案
Hotfix 資訊
支援的 hotfix 可從 Microsoft 取得。不過,此 Hotfix 僅用於修正本文中所述的問題。此 Hotfix 只適用於發生此特定問題的系統上。
如果 hotfix 可供下載,在此知識庫文件頂端將出現「可用的 Hotfix」區段。如果這個區段不會出現,將要求提交給 Microsoft 客戶服務及支援取得 Hotfix。 注意如果發生其他問題,或如果需要進行疑難排解,您可能必須建立個別的服務要求。收取支援費用會套用到其他支援問題和此特定 hotfix 無法解決的問題。如 Microsoft 客戶服務及支援的電話號碼或建立個別的服務要求的完整清單,請造訪下列 Microsoft 網站︰http://support.microsoft.com/contactus/?ws=support注意「 下載 Hotfix 」 表單會顯示 hotfix 可用的語言。如果看不到您的語言,是因為未提供該語言的 Hotfix 。
先決條件
您必須有 Visual Studio 2008 Service Pack 1 (SP1) 安裝套用此 hotfix 之後。
重新啟動需求
您不必重新啟動電腦,如果正在使用中沒有的 Visual Studio 執行個體,會套用此 hotfix 之後。
Hotfix 取代資訊
此 hotfix 不會取代其他 hotfix。
檔案資訊
此 hotfix 的英文版具有下列表格中所列檔案屬性 (或較新的檔案屬性)。這些檔案的日期和時間會以國際標準時間 (UTC) 格式列出。當您檢視檔案資訊時,會將它轉換為本地時間。若要查看 UTC 與當地時間的時差,請在 [控制台] 中的日期和時間項目使用 [時區] 索引標籤。
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
時間 |
平台 |
---|---|---|---|---|---|
C1.dll |
15.0.30729.4987 |
678,720 |
09-Mar-2010 |
10:18 |
x86 |
C1xx.dll |
15.0.30729.4987 |
2,204,488 |
09-Mar-2010 |
10:18 |
x86 |
C1xx.dll |
15.0.30729.4987 |
2,215,240 |
09-Mar-2010 |
10:18 |
x86 |
C1xx.dll |
15.0.30729.4987 |
2,339,656 |
09-Mar-2010 |
10:18 |
x86 |
C1xx.dll |
15.0.30729.4987 |
2,505,552 |
09-Mar-2010 |
10:18 |
x86 |
C1xx.dll |
15.0.30729.4987 |
2,891,592 |
09-Mar-2010 |
10:18 |
x64 |
狀態
Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。
更多的資訊
若要解決這個錯誤,在編譯器中的,安裝此 hotfix,然後儲存該檔案,加上位元組順序標記。此外,在原始程式檔中加入下列的 「 pragma"指示詞之前的字串常值。
#pragma execution_character_set("utf-8")
注意"Pragma"指示詞設定原始程式檔的轉譯單位,直到 「 pragma"指示詞另一個 「 pragma"指示詞所取代。