原因
waring C4819是一个常见的C++编译警告,是因为文件中的包含了当前代码页无法表示的字符。实际示例如下所示:
2>F:\libigl-2.5.0\include\igl\parallel_for.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
请勿忽略
该警告在极少数情况下会导致以下甚至更多奇怪的错误:
- error C2065: “xxx”: 未声明的标识符
- error C2923: “xxx”: “xxx” 不是参数 “xxx” 的有效 模板 类型参数
- error C2244: “xxx”: 无法将函数定义与现有的声明匹配
- error C1070: 文件“xxx.h”中的 #if/#endif 对不匹配
所以请勿忽略!!
解决方法
解决方法很简单,只要切换编码格式即可。
以Visual Studio为例:
- 打开存在
waring C4819的文件。 - 在菜单
文件中选择xxx 另存为菜单项。 - 在弹出的
另存文件为对话框中的右下角处的保存下拉列表中选择编码保存。 - 在弹出的
确认另存为对话框中选择是。 - 在弹出的
高级保存选项对话框中的编码列表中选择Unicode - 代码页 1200,点击确定就完成了。
其他IDE或文本编辑工具均有类似的功能,操作也大同小异。