‘壹’ 出现中文符号时,编译错误信息显示什么
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
打开APP
System_sleep
关注
VS2019代码中包含中文内容导致的编译错误和打印输出乱码问题 原创
2022-06-25 17:45:47
2点赞
System_sleep
码龄11年
关注
前言
在VS2019中,如果代码中包含中文字符串定义或注释,会导致各种莫名其妙的编译错误,就算是运气好,编译没有报错,也会遇到控制台打印中文乱码的问题,让人倍感烦躁。
编译问题
1. 代码中定义了中文字符串常量导致编译错误:“常量中有换行符“ ;
2. 代码中包含中文注释导致编译错误:找不到XXX (宏、变量)、XXX不是常量/变量及由于找不到声明导致的其他问题;
打印乱码问题
代码打印中文字符串,在命令提示符输出是乱码;
解决方法,三种方法任选其一:
一. 修改代码文件格式为utf-8带签名,让MSVC编译器能够自动识别并以utf-8 BOM格式加载文件:
使用外部编辑器将代码文件保存为utf8-BOM格式;
或 打开代码文件,在VS2019 “高级保存选项” 中将代码文件保存格式选择为“Unicode-带签名“;
二. 修改代码格式:
修改中文字符串、中文注释的格式,在中文结尾处添加英文空格,让MSVC编译器能够以GBK编码方式加载编译中文utf-8编码字符串,可以解决编译报错问题,打印还是乱码;
三. 强制指定MSVC编译器加载代码文件的编码格式:
在VS2019“项目”-“工程属性”对话框-“C/C++”-“所有选项"子页,在“附加选项”内添加 “/utf-8” (等同于”/source-charset:utf-8 /execution-charset:utf-8");
在VS2019“项目”-“工程属性”对话框-“C/C++”-"所有选项"子页,在“附加选项”内添加 “/source-charset:utf-8 /execution-charset:gbk” (前者表示文件本身的编码,后者表示编译以后的字符数组内的字节是什么编码);
总结:
1. 如果是新建工程,推荐方法一,让所有新建代码文件都统一为utf-8 BOM 格式;
2. 如果是跨平台代码,且文件包含少量中文注释,可以尝试方法二;
3. 如果是已有的历史复杂工程(非使用工具导出的解决方案),可以尝试方法三, 但需要注意设置execution-charset时,要同时考虑到UI显示和打印二者对字符串编码的要求(可能不一致);
‘贰’ 为什么VBS文件打不开,显示编译器错误
如冰伤软件_小健所说,你双击是运行程序,而不是编辑程序。而你的程序有错,所以出现错误信息。你可以点右键,从菜单中选择“编辑”。
或打开一个记事本,将E:\图片库\恩.vbs拖到里面就打开,进入编辑状态。修改错误代码后再运行。
‘叁’ tasking编译器出现makefile错误
make编译makefile文件时可能会出现的常见问题之一就是文件格式问题 了:
make后会报错:make:*** 缺失分隔符 停止;
这是因为书写格式不正确导致的错误,通常是因为将Tab键替换为了空格键 导致的格式错误,只需要将错误行找出并将空格键改为Tab键,并且代码高亮则说明格式修改正确。
2 常见问题之二:
出现这种是因为犯了一个和本人一样的粗心问题,这题提示没有server.o文件是因为编译期间没有找到sever.c文件导致无法生成.o文件,所以,一定是因为没有注意.c文件的名称导致的问题;
这里作者发现是因为没有将main.c修改为server.c,所以在修改过来后重新make就成功啦
‘肆’ VS2008 编译时出现的错误:无法打开编译器中间文件。如何解决
你这个跟我的问题一模一样。。。
原因:W盘是某个软件建的一个盘,它修改了环境变量TMP和TEMP的路径
解决方法:我的电脑->属性->高级->环境变量,把里面这两个变量的路径修改一下,改成C盘、D盘都行
‘伍’ 编译错误,如何解决error LNK2001: unresolved external symbol
导致“error LNK2001: unresolved external symbol”的原因为getStats此方法的链接库没有找到。很可能是工程中引用了第三方开源库或者自己编译生成的库,且只用了头文件,而没有将对应的lib文件路径加入到工程中。
具体解决方法为(此方法针对vs系列集成开发环境):
1.如果还未引入头文件,那么可以右键点击项目,然后点击“属性”。