linux上的c或c++等文件拷贝到windows编译时各种出错

一:文件编码格式

        linux使用的是UTF-8的格式;windows会用的是GBK的格式,需要将UTF-8转到GBK(但是此时可能会出现中文乱码),转码成GBK后编译就不会出现报错了。

当然,不想转码的话可以在VS2019上直接新建文件,将linux上的文件内容直接复制粘贴到新建的文件上也可以,这样的话换行符还有编码那些都是windows下的,可以减少更多不必要的麻烦。若采用windows的vs下新建文件,复制linux文件内容到新建文件上的方式的话那下一部分:换行符导致编译出错的内容也可以略过不看。

二:换行符导致出错

        开发人员经常会遇到多平台的开发,比如最常见的是在linux与windows之间的开发。常常为了便利,我们会之间将linux的文件拷贝到windows上的工程上来编译,但是这会出现错误:

linux上的c或c++等文件拷贝到windows编译时各种出错_第1张图片

明明已经定义了的变量,编译时却提示: C2065“xxxx”: 未声明的标识符

这主要是因为linux与windows下文件的换行符不一样导致的。linux文件的换行符是\n字符,而windows文件的换行符是\r\n两个字符。因此,如果我们将一个多行文件,从linux操作系统中传输到windows操作系统时,经常多行文件会变成一行,如下图:

linux上的c或c++等文件拷贝到windows编译时各种出错_第2张图片

这就是结束符\n导致的,可以用如notepad++这类的软件打开,“视图->显示符号->显示所有符号”,然后可以看到所有的回车换行都是linux的LF:

linux上的c或c++等文件拷贝到windows编译时各种出错_第3张图片

 因此我们需要将linux下的LF转为windows的CRLF类型,可以使用其他dos2unix等工具,当然,也可以使用notepad++进行转换:“编辑->档案格式转换->转换为windows格式”:

linux上的c或c++等文件拷贝到windows编译时各种出错_第4张图片

修改过后为:

linux上的c或c++等文件拷贝到windows编译时各种出错_第5张图片

这种CRLF文件结束符才是windows的。 

你可能感兴趣的:(linux,windows)