經(jīng)驗(yàn)分享:如何解決VS編譯器下面的C4819警告?兩種方法教你!
在windows上寫程序,默認(rèn)使用ANSI編碼。windows對中文支持很好,程序編譯運(yùn)行之后沒有任何違和感。當(dāng)將程序搬到linux執(zhí)行的時候,如果系統(tǒng)的環(huán)境沒有配好,終端下中文輸出來幾乎都是亂碼。為了方便程序的移植,決定讓文件使用utf8編碼。

utf8編碼解決了程序在linux中文顯示的問題,反過來windows下就有問題了。使用visual studio編譯utf8編碼的文件,編譯器會就會出現(xiàn)4819警告:xxxx.h:??warning C4819: 該文件包含不能在當(dāng)前代碼頁(936)中表示的字符。請將該文件保存為 Unicode 格式以防止數(shù)據(jù)丟失。
由于我寫的是CUDA程序,涉及到了NVCC和VC兩個編譯器。在Windows下不知道文件是哪個編譯器編譯的,所以警告來源沒搞清楚。在這種情況下解決問題走了很多彎路。嘗試過的辦法報告把文件格式從utf8轉(zhuǎn)到utf8-BOM,代碼頁從936調(diào)到65001,再到1200。試過很多網(wǎng)上的方法,針對我這種情形不再適用。

后來瀏覽外文論壇,找到解決方法:
如果只是VC編譯器,在項(xiàng)目屬性->C/C++->高級->禁用特定警告中輸入 4819就可以去掉這個煩人的警告。
這個方法對一般人夠了,但是還沒有解決我的問題。我使用NVCC編譯器編譯文件,這樣設(shè)置了之后這個警告還是存在。針對NVCC同樣需要把這個警告禁用,操作如下:
項(xiàng)目屬性->CUDA C/C++->Command Line->其他選項(xiàng)中輸入?-Xcompiler “/wd 4819” 。
這樣已設(shè)置,世界就清凈完美了~再也沒有煩人的提示了。
————
另外。對于學(xué)習(xí)編程或者在工作想升職的程序員,如果你想更好的提升你的編程能力幫助你提升水平!筆者這里或許可以幫到你~
微信公眾號:C語言編程學(xué)習(xí)基地
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
