GCC и Clang не предупреждают о неиспользованной исключительной переменной - PullRequest
0 голосов
/ 04 мая 2019

Рассмотрим следующий бесполезный код, в частности, int k в предложении catch:

int main()
{
    try
    {
        throw 0;
    }
    catch(int k)
    {
    }

    return 0;
}

При компиляции с g ++ (версия 8.3.0) и clang ++ (8.0.0) с -Wall -Wextra предупреждения не выдаются, несмотря на неиспользованную переменную k. Visual Studio предупреждает, вот как я обнаружил эту разницу в моем проекте.

Это ошибка в GCC и Clang, или я неправильно понимаю набор флагов -Wunused?

1 Ответ

0 голосов
/ 11 мая 2019

Clang

Сообщение об ошибке: https://bugs.llvm.org/show_bug.cgi?id=41746

Оказывается, у clang есть предупреждение -Wunused-exception-parameter, хотя оно не активировано ни одной из групп -Wall, -Wextra или -Wunused.

НКУ

Сообщение об ошибке: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90353

Как отмечено в комментарии к этому вопросу и в отчете об ошибке, все параметры catch всегда помечаются как использованные. Это расследуется в связанном отчете об ошибке.

...