开发者
资源
CPP预处理含有中文注释的文件报错及解决方案
CPP预处理含有中文注释的文件报错及解决方案
发表于2023/07/31
4095

【问题描述】

在openEuler 22.03系统中编译某应用时,发现CPP预处理含有中文注释的文件时报错

grapes1.JPG

【解决方案】

通过修改CPP参数(加入-traditional-cpp选项),问题可以解决,如下:

grapes2.JPG

但会引入新问题----预处理无法展开头文件。

正常展开头文件结果为:

grapes3.JPG

而加入-traditional-cpp选项后的结果却为(get_nl_config.inc文件无法被展开):

grapes4.JPG

其中get_nl_config.inc头文件是在…/inc目录中,已使用-I…/inc参数指定,其内容为:

grapes5.JPG

通过排查含有中文注释的源文件发现其编码为(latin1):

grapes6.JPG

而系统编码为(UTF-8):

grapes7.JPG

因此,最终解决方案为:更改中文注释的源文件编码,使之与系统编码保持一致。

即:vim打开文件后,使用:set fileencoding=utf-8命令更改文件编码与系统编码一致,即可解决中文预处理问题,不用加入-traditional-cpp选项导致-E选项展开头文件失败。

编译选项如下:

grapes8.JPG

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞