當前位置:編程學習大全網 - 源碼下載 - 出現中文符號時,編譯錯誤信息顯示什麽

出現中文符號時,編譯錯誤信息顯示什麽

Copyright ? 1999-2020, CSDN.NET, All Rights Reserved

打開APP

System_sleep

關註

VS2019代碼中包含中文內容導致的編譯錯誤和打印輸出亂碼問題 原創

2022-06-25 17:45:47

2點贊

System_sleep ?

碼齡11年

關註

前言

在VS2019中,如果代碼中包含中文字符串定義或註釋,會導致各種莫名其妙的編譯錯誤,就算是運氣好,編譯沒有報錯,也會遇到控制臺打印中文亂碼的問題,讓人倍感煩躁。

編譯問題

1. 代碼中定義了中文字符串常量導致編譯錯誤:“常量中有換行符“ ;

2. 代碼中包含中文註釋導致編譯錯誤:找不到XXX (宏、變量)、XXX不是常量/變量及由於找不到聲明導致的其他問題;

打印亂碼問題

代碼打印中文字符串,在命令提示符輸出是亂碼;

解決方法,三種方法任選其壹:

壹. 修改代碼文件格式為utf-8帶簽名,讓MSVC編譯器能夠自動識別並以utf-8 BOM格式加載文件:

使用外部編輯器將代碼文件保存為utf8-BOM格式;

或 打開代碼文件,在VS2019 “高級保存選項” 中將代碼文件保存格式選擇為“Unicode-帶簽名“;

二. 修改代碼格式:

修改中文字符串、中文註釋的格式,在中文結尾處添加英文空格,讓MSVC編譯器能夠以GBK編碼方式加載編譯中文utf-8編碼字符串,可以解決編譯報錯問題,打印還是亂碼;

三. 強制指定MSVC編譯器加載代碼文件的編碼格式:

在VS2019“項目”-“工程屬性”對話框-“C/C++”-“所有選項"子頁,在“附加選項”內添加 “/utf-8” (等同於”/source-charset:utf-8 /execution-charset:utf-8");

在VS2019“項目”-“工程屬性”對話框-“C/C++”-"所有選項"子頁,在“附加選項”內添加 “/source-charset:utf-8 /execution-charset:gbk” (前者表示文件本身的編碼,後者表示編譯以後的字符數組內的字節是什麽編碼);

總結:

1. 如果是新建工程,推薦方法壹,讓所有新建代碼文件都統壹為utf-8 BOM 格式;

2. 如果是跨平臺代碼,且文件包含少量中文註釋,可以嘗試方法二;

3. 如果是已有的歷史復雜工程(非使用工具導出的解決方案),可以嘗試方法三, 但需要註意設置execution-charset時,要同時考慮到UI顯示和打印二者對字符串編碼的要求(可能不壹致);

  • 上一篇:centos7 mysql5.6.37 選擇哪個linux
  • 下一篇:千帆應用程序源代碼
  • copyright 2024編程學習大全網