Есть ли флаг GCC для предупреждения об идентичном переопределении переменной внутри области видимости?

Как видно здесь, допустимым является код C:

int test = 10;
if (true) {
    int test = 10;
}

Мне интересно, есть ли флаг для предупреждения в таких случаях, когда переопределение идентично.


person Marc.2377    schedule 22.06.2017    source источник
comment
@Олаф Вау. Конечно, я мог бы прочитать это, но это не было бы никакой ценностью для сообщества, не так ли? Кстати, тег С++ действителен. См. соответствующий вопрос, с которым я связан.   -  person Marc.2377    schedule 22.06.2017
comment
В любом случае такие вопросы не представляют никакой ценности для сообщества (это также неубедительное оправдание), потому что это будет очевидно первое, что нужно искать. gcc хорошо документирован, и найти документацию очень просто: gcc documentation.   -  person too honest for this site    schedule 22.06.2017


Ответы (2)


Существует: -Wshadow=local. Передача другого значения (вместо «local») также позволяет более точно контролировать, какие идентификаторы могут и не могут быть затенены.

Он проверяет, совпадает ли имя, что является достаточно хорошим приближением.

person milleniumbug    schedule 22.06.2017

-Wshadow Предупреждать всякий раз, когда локальная переменная или объявление типа затеняет другую переменную, параметр, тип или член класса (в C++) или всякий раз, когда затеняется встроенная функция. Обратите внимание, что в C++ компилятор не будет предупреждать, если локальная переменная затеняет структуру/класс/перечисление, но будет предупреждать, если она затеняет явный typedef.

Источник: https://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/Warning-Options.html

person nahzor    schedule 22.06.2017