Как предотвратить, чтобы сообщения `# warning` считались ошибкой? - PullRequest
8 голосов
/ 14 декабря 2011

Я пытаюсь скомпилировать, ввести флаг -Werror в существующую кодовую базу.Одна из проблем, с которыми я сталкиваюсь, заключается в том, что в некоторых местах #warning используется для отображения информационных сообщений.Это не должно рассматриваться как ошибка.

Одним из решений было бы использование #pragma message вместо этого, но, похоже, это не поддерживается более старыми версиями gcc.(Наши серверы сборки используют gcc 4.1.2).

Кто-нибудь может мне помочь исправить это?

Ответы [ 2 ]

4 голосов
/ 15 декабря 2011

В gcc-4.6 и выше вы можете использовать -Wno-error=cpp.По крайней мере, в лягушке, выпущенной с Lion и позже, вы можете использовать -Wno-error=#warnings.Но так как ваши серверы сборки используют древний gcc, вам, вероятно, не повезло.

В общем, передайте -fdiagnostics-show-option, чтобы предупреждения отображали вывод вроде:

test.cc:1:2: warning: #warning hello [-Wcpp]

который сообщает вам флаг предупреждения, управляющий предупреждением.В gcc> = 4.6 и clang это значение по умолчанию, поэтому знание о передаче его может быть не слишком полезным.

1 голос
/ 24 сентября 2012

Локально отключить эффект -Werror для #warning следующим образом:

#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-Wcpp"
#warning Informative message: everything is nice and good!!!
#pragma GCC diagnostic pop

Преимущество этого подхода состоит в том, что вы все равно можете вызвать ошибку с #warning в другом месте кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...