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

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

但会引入新问题----预处理无法展开头文件。
正常展开头文件结果为:

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

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

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

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

因此,最终解决方案为:更改中文注释的源文件编码,使之与系统编码保持一致。
即:vim打开文件后,使用:set fileencoding=utf-8命令更改文件编码与系统编码一致,即可解决中文预处理问题,不用加入-traditional-cpp选项导致-E选项展开头文件失败。
编译选项如下:

【问题描述】
在openEuler 22.03系统中编译某应用时,发现CPP预处理含有中文注释的文件时报错
【解决方案】
通过修改CPP参数(加入-traditional-cpp选项),问题可以解决,如下:
但会引入新问题----预处理无法展开头文件。
正常展开头文件结果为:
而加入-traditional-cpp选项后的结果却为(get_nl_config.inc文件无法被展开):
其中get_nl_config.inc头文件是在…/inc目录中,已使用-I…/inc参数指定,其内容为:
通过排查含有中文注释的源文件发现其编码为(latin1):
而系统编码为(UTF-8):
因此,最终解决方案为:更改中文注释的源文件编码,使之与系统编码保持一致。
即:vim打开文件后,使用:set fileencoding=utf-8命令更改文件编码与系统编码一致,即可解决中文预处理问题,不用加入-traditional-cpp选项导致-E选项展开头文件失败。
编译选项如下: