-Wno-педантичный игнорируется на старых GCC

У меня есть приложение C ++, где я использую макросы с нулевым аргументом и переменными. Тем не менее, мне не очень нравится стандартное соответствующее решение, опубликованное здесь на SO в различных ответах, но я хочу, чтобы GCC был специфичным ##__VAR_ARGS__,

Я хотел бы поймать как можно больше предупреждений.

Моя система сборки — мезон, и я прошел опцию --buildtype=debugoptimized --warning_level=2 --werror=true и указать -Wno-pedantic в качестве дополнительного аргумента проекта.

В Ob Ubuntu 18.04, gcc 7.3.0, meson 0.45.1 добавлены следующие опции компилятору: -Wall -Wextra -Werror -Wpedantic -Wno-pedantic -std=c++11 и все строит нормально.

Тот же код, те же опции в CentOS 7.4.1708, gcc 4.8.5, meson 0.44.1 явно добавляют те же опции в компилятор, но не компилируются, и я получаю следующую ошибку:

ISO C99 requires rest arguments to be used (для макроса variadic)

Кажется, что -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 в качестве аргументов проекта.

Так что я не уверен, что это проблема компилятора, проблема с мезонами или просто какая-то неудачная разница в версии, которую я поражаю.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]