C++
跨平台开发,中文操作系统经常能碰到:error C2001
常量中有换行符
visual studio
cmake
组织项目编译脚本,windows
系统下面开发时,临时生成一份解决方案,跨平台的原因,文件编码选择utf-8
。
引用资料从原理出发详细的解释了问题的的成因
针对编码,MSVC
有专门的编译选项/source-charset
和/execution-charset
,前者表示文件本身的编码,后者表示编译以后的字符数组内的字节是什么编码,编码问题基本可以用这两个选项解决。
比如,windows
的cmd
控制台默认只能显示GBK
编码,但是代码文件本身是UTF-8
,因为跨平台的缘故,又不方便直接修改成GBK
,当然这里就不包括为不同平台写编码转换代码这种办法。在Win10
上,可以设置这两个编译选项为/source-charset:utf-8 /execution-charset:gbk
,表示让编译器以UTF-8
编码读入,然后转为GBK
保存在数组里面,这样直接printf
就能在cmd
控制台上正常显示汉字。
CMake 针对 Visual studio 设置
if( WIN32 )
message( STATUS "Configuring trade on WIN32")
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /source-charset:utf-8 /execution-charset:gbk")
endif()