将一个只用到标准库函数的 C 程序在 Windows 平台上用 VS 2010 编译,没有出任何问题。再将它放到 64 位 CentOS 6.8 下,用 GCC 编译它,接收到一大堆警告和错误报告,如下图:

其中大部分是“null character(s) ignored”警告,还有一些像stray '***' 这样的错误。经过调查发现,原因在于在 Windows 平台上用文本编辑器保存这个 C 程序时,因为在其中用中文写了一些注释,保存时 Visual Studio 2010 IDE 显示了以下警告:

warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

于是在文本编辑器中保存时,将编码设置为了 UNICODE,但是 GCC 编译器不能识别 UNICODE 编码格式的源文件,就会产生如上图所示的警告和错误。(注意: UNICODE 本身是一个很大的概念,包含 UTF-8、UTF-16、UTF32。但 Windows 平台上的 UNICODE 实质上是指 UTF-16 编码,Linux 平台上通常采用 UTF-8 编码。)

由于只是想让这个 C 程序在 CentOS 6.8 上能执行,并不需要在 Linux 下编辑它,而且中文字符仅在程序的注释中出现,所以最简单的解决方法就是在 Windows 平台上用文本编辑器(比如 Notepad、Notepad++ 等)将这个 C 程序的源文件转换成 ASCII 编码或 UTF-8 编码。从 Windows 7 开始,自带的记事本 Notepad 在“另存为”时都允许用户选择编码方式。如下图所示:

于是只需用记事本将原来的 C 程序另外保存一份,编码选择 ASNI 或 UTF-8 都可以,接下来将新保存的文件拿到 CentOS 6.8 下用 GCC 编译。此时程序就能顺利地被编译,GCC 不再报告警告和错误了。

Windows 下的 Visual Studio 能够很好地自动识别源程序的编码方式,经过实验后发现:通过使用 Notepad 程序,将上面的 C 程序文件以 ANSI、Unicode、Unicode big endian、UTF-8 四种编码方式分别保存,在 VS 2010 中分别编译,都能够成功编译,不会像 GCC 那样产生警告和错误。

(特别注意:使用 Notepad 程序将源文件以 UTF-8 编码方式保存时,实际上是以 UTF-8 + BOM 编码方式保存的!)




警告 warning: NUL charactor seen; rest of line ignored相关推荐

  1. Scapy脚本执行出现警告WARNING解决办法

    2019独角兽企业重金招聘Python工程师标准>>> (转自:Scapy脚本执行出现警告WARNING解决办法) 安装完scapy,简单写了个脚本执行总是会警告一下: WARNIN ...

  2. .php on line 0,启动禅道项目管理软件时,报PHP Warning: PHP Startup: in Unknown on line 0解决方法...

    启动禅道项目管理软件时,ZenTao\xampp\apache\logs\php_error文件中报如下错误: [20-Jun-2019 08:00:39 UTC] PHP Warning:  PHP ...

  3. 【开发日常】【Makefile】编译时如何将警告(warning)视为错误(error)?

    我们有时会遇到内核编译时警告(warning)被视为错误(error)等问题 在内核源码中,移植外部驱动模块,出现报错: error: unused variable 'xxx' [-Werror=u ...

  4. oracle bround,【案例】Oracle警告 WARNING:inbound connection timed out (ORA-3136)解决办法

    天萃荷净 运维DBA反映,巡检alert日志文件中发现大量Oracle日志警告WARNING: inbound connection timed out (ORA-3136) 1.alert日志文件警 ...

  5. VCS编译仿真警告Warning

    VCS编译仿真警告Warning 问题描述 在较大的SOC集成中,通常使用Perl脚本例化子模块到Top层,然而,有时会出现例化出来的输入端口名没有在Top层定义,而且端口的位宽为1bit,那么,ve ...

  6. 警告Warning: Nashorn engine is planned to be removed from a future JDK release

    在java11中使用Nashorn engine,会有警告Warning: Nashorn engine is planned to be removed from a future JDK rele ...

  7. 【python解决SQLAlchemy+MySQL插入数据时报警告Warning: (1366, “Incorrect string value: ‘\\xD6\\xD0\\xB9\\xFA\\xB】

    python解决SQLAlchemy+MySQL插入数据时报警告Warning: (1366, "Incorrect string value: '\xD6\xD0\xB9\xFA\xB1\ ...

  8. 关闭Java11中即将移除Nashorn引擎的警告Warning: Nashorn engine is planned to be removed from a future JDK release

    在java11中使用Nashorn engine,会有警告Warning: Nashorn engine is planned to be removed from a future JDK rele ...

  9. keil5报警告warning:implicit declaration ‘xxxxxxxx’ is invalid in C99 大部分解决办法

    keil5报警告warning:implicit declaration 'xxxxxxxx' is invalid in C99 大部分解决办法 我遇到这个问题是在RM战队调裁判系统的时候遇到的. ...

最新文章

  1. 面试前临时抱佛脚——常见的Shell脚本面试题
  2. 算法分析与设计-实验三 贪心算法设计
  3. SAP CRM WebClient UI 某些icon图标不能正常显示X
  4. 操作12864(ST7920控制器)
  5. 1过程流程图 3 apqp_为什么过程开发的平面布置图要遵循精益原则?
  6. 用DirectionalViewPager代替ViewPager
  7. 重新开始我的blog内容!
  8. Bnuoj-29359 Deal with numbers 线段树
  9. Tomcat8安装及配置详解
  10. 计算机相关专业的学生如何规划自己的职业?
  11. word大纲视图快速转成PPT
  12. java rest 图_java – Serenity Rest服务
  13. 商场抽奖软件 android,召唤抽奖系统
  14. Java入门项目——读书管理系统
  15. Zcash的“十月围城”
  16. 思想决定生活 -《卡耐基成功之道全书》读书笔记
  17. html 名词解释 综合解释,HTML和JAVASCRIPT综合练习题2014答案
  18. Oracle课程-深入学习文档
  19. 阿里云服务器操作系统如何选择?
  20. 安卓apk逆向之雷霆解锁VIP会员超详细教程

热门文章

  1. 面试官:来考考你几道常见的MySQL题目吧
  2. 解决伪原创视频 改变视频md5原创
  3. 简单的python脚本-python基础练习之几个简单的游戏
  4. arcgis图斑尖角检查_arcgis 定位图斑,并且高亮显示
  5. 2.yolov5目标监测-实践部分
  6. Elasticsearch高级操作 (多关键字精确查询)
  7. 外国建筑史的学习资料
  8. 电力系统分析(Matlab代码实现)
  9. Discuz安装与配置
  10. Discuz插件提示:对不起,您安装的不是正版应用的解决办法