-在旧版gcc上忽略了

时间:2018-06-20 19:26:27

标签: c++ gcc meson-build gcc-pedantic

我有一个C ++应用程序,在其中我使用零参数可变变量宏。但是,我真的不喜欢这里在SO上发布的各种标准答案的各种答案,而是保留GCC特定的##__VAR_ARGS__

我想尽可能多地得到警告。

我的构建系统是介子,我通过了选项--buildtype=debugoptimized --warning_level=2 --werror=true并指定了-Wno-pedantic作为附加项目参数。

Ob Ubuntu 18.04,gcc 7.3.0,介子0.45.1为编译器添加了以下选项:-Wall -Wextra -Werror -Wpedantic -Wno-pedantic -std=c++11,一切正常。

相同的代码,CentOS 7.4.1708,gcc 4.8.5,介子0.44.1上的相同选项向编译器添加了完全相同的选项,但没有编译,并且出现以下错误:

ISO C99 requires rest arguments to be used(用于可变参数宏)

在此编译器中似乎忽略了-Wno-pedantic

我可以稍微使用警告选项,但是在Ubuntu或CentOS上,构建失败。当Ubuntu构建失败时,错误消息会有所不同:

ISO C++11 requires at least one argument for the "..." in a variadic macro

到目前为止,我发现使两个构建都成功的唯一解决方案是使用meson --buildtype=plain --warning_level=1 -werror=true并将-Wall -Wextra设置为项目参数。

所以我不确定这是编译器问题,介子问题还是只是我遇到的一些不幸的版本差异。

0 个答案:

没有答案