请勿忽略 warning C4819

 

原因

waring C4819是一个常见的C++编译警告,是因为文件中的包含了当前代码页无法表示的字符。实际示例如下所示:

2>F:\libigl-2.5.0\include\igl\parallel_for.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

请勿忽略

该警告在极少数情况下会导致以下甚至更多奇怪的错误:

  1. error C2065: “xxx”: 未声明的标识符
  2. error C2923: “xxx”: “xxx” 不是参数 “xxx” 的有效 模板 类型参数
  3. error C2244: “xxx”: 无法将函数定义与现有的声明匹配
  4. error C1070: 文件“xxx.h”中的 #if/#endif 对不匹配

所以请勿忽略!!

解决方法

解决方法很简单,只要切换编码格式即可。 以Visual Studio为例:

  1. 打开存在waring C4819的文件。
  2. 在菜单文件中选择xxx 另存为菜单项。
  3. 在弹出的另存文件为对话框中的右下角处的保存下拉列表中选择编码保存。
  4. 在弹出的确认另存为对话框中选择是。
  5. 在弹出的高级保存选项对话框中的编码列表中选择Unicode - 代码页 1200,点击确定就完成了。

其他IDE或文本编辑工具均有类似的功能,操作也大同小异。