спецификации динамических исключений устарели - PullRequest
0 голосов
/ 09 мая 2018

У меня был некоторый код, который используется для компиляции (и работы), теперь я получаю много следующих предупреждений. Это произошло после того, как я сделал dist-upgrade до Ubuntu-Mate.

предупреждение: спецификации динамических исключений устарели в C ++ 11

Это происходит в таких простых строках (в заголовке):

    static Value getPriorityValue(const std::string& priorityName)
    throw(std::invalid_argument);

Я получил 2545 предупреждений, связанных с этим! Есть ли способ сказать компилятору игнорировать это предупреждение? Какой самый простой способ внести изменения в код.

Большинство ошибок в пакете стороннего производителя, поэтому я не хочу вносить слишком много изменений в этот пакет.

У меня в компиляторе установлен флаг -std = c ++ 11.

1 Ответ

0 голосов
/ 09 мая 2018

Вы должны удалить или закомментировать эти спецификации исключений везде, где можете 1 , например ::

static Value getPriorityValue(const std::string& priorityName);
static Value getPriorityValue(const std::string& priorityName) /* throw(...) */;

Вы можете использовать опцию -Wno-deprecated, чтобы отключить предупреждения амортизации для мест, где вы не можете редактировать код. Я бы рекомендовал использовать его только при компиляции сторонних библиотек. Если вам нужно включить сторонний заголовок, который выдает такое предупреждение, вы можете сделать 2 :

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated"
#include "thirdparty.h"
#pragma GCC diagnostic pop

Это должно работать как с gcc, так и с clang и отключать -Wdeprecated только для определенных включений.

1 Спецификации динамических исключений устарели с C ++ 11 и недопустимы с C ++ 17, поэтому вы можете избавиться от них и обновить сторонние библиотеки. используя как можно скорее.

2 Если вы включите эти заголовки, используя аргумент -I, вы можете переключиться на -isystem, чтобы отключить все предупреждения для этих заголовков, как упомянуто @ Yakk - Adam Nevraumont . См. Также Как подавить предупреждения GCC из заголовков библиотеки? .

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