Сделать -Wshadow игнорировать список инициализатора

В большом проекте я недавно обнаружил проблему с теневыми переменными-членами. Чтобы избежать этого в будущем, я хотел бы представить -Wshadow, чтобы показать такие проблемы. Однако большинство конструкторов выглядит так:

struct Foo{
int bar1, bar2;
Foo(int bar1, int bar2): bar1(bar1), bar2(bar2){}
}

Это приятно и удобно, но, конечно, заставляет компилятор выдавать предупреждение, поэтому я получаю спам с предупреждениями в этих местах. Конечно, я мог бы изменить имена параметров или переменные-члены (но как они должны называться? «Bar1» уже прекрасно описывает имя …) Но так как это большая работа, отвлекающая от реальной проблемы, я бы предпочел хотел бы, чтобы gcc игнорировал списки инициализаторов на данный момент.

Есть ли флаг / опция / …, который ведет себя как Wshadow, но игнорирует списки инициализаторов?

2

Решение

Временно игнорируйте предупреждения, используя Диагностические прагмы GCC.

struct Foo{

int bar1, bar2;

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wshadow"Foo(int bar1, int bar2)
:bar1{bar1}
,bar2{bar2}
{}
#pragma GCC diagnostic pop

};
0

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


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