-Wno-pedantic ignored on older gcc
Asked Answered
R

0

2

I have a C++ application where I am using zero-arguments-variadic macros. However, I don't really like the standard conforming solution posted here on SO in various answers, but rather keep the GCC specific ##__VAR_ARGS__.

I'd like to catch as much warnings as possible though.

My build system is meson and I passed the options --buildtype=debugoptimized --warning_level=2 --werror=true and specify -Wno-pedantic as an addtional project argument.

Ob Ubuntu 18.04, gcc 7.3.0, meson 0.45.1 this adds the following options to the compiler: -Wall -Wextra -Werror -Wpedantic -Wno-pedantic -std=c++11 and everything builds fine.

The same code, the same options on CentOS 7.4.1708, gcc 4.8.5, meson 0.44.1 adds extactly the same options to the compiler but does not compile and I get the following error:

ISO C99 requires rest arguments to be used (for the variadic macros)

It seems that -Wno-pedantic is ignored in this compiler.

I can play around with the warning options a bit, but either on Ubuntu or CentOS the build is failing. When the Ubuntu build fails, the error message is a bit different:

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

The only solution to make both builds succeed I found so far is using meson --buildtype=plain --warning_level=1 -werror=true and setting -Wall -Wextra as project arguments.

So I'm not sure if this is a compiler issue, a meson issue or just some unfortunate version difference I'm hitting.

Renin answered 20/6, 2018 at 19:26 Comment(3)
You could dodge all this mess and conditionally set flags depending on the gcc versionHearthstone
Have you tried std=gnu++11?Lymphoblast
@Hearthstone I don't want to work around the issue but fix it. I consider adding version checks a dirty hack which gets even dirtier when other compilers (clang) and other targets come into play.Renin

© 2022 - 2024 — McMap. All rights reserved.