Включить предупреждение компилятора для инициализации переменных-членов самими собойC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Включить предупреждение компилятора для инициализации переменных-членов самими собой

Сообщение Anonymous »

Есть ли предупреждение компилятора в gcc и/или vs об обнаружении переменных-членов, инициированных самим собой?

gcc имеет -Winit-self, но, похоже, работает только для

Код: Выделить всё

int f()
{
int i = i;
return i;
}
и не для

Код: Выделить всё

class A {
int m;
public:
A(int) : m(m) { }
int f() {return m;}
};
Изменить: верните вопрос: не хватало только -O1 или выше (спасибо @honk)

Редактировать 2: На самом деле проблема снова актуальна. В упрощенном примере -O1 -Wuninitialized -Winit-self работает, однако он перехватывает его не в тот момент, когда вы объявляете m(m), а скорее, когда вы определяете A(4). Это также означает, что компилятор не улавливает это, если конструктор находится в своей собственной единице компиляции (что, как я полагаю, должно происходить довольно часто в реальных сценариях).

Подробнее здесь: https://stackoverflow.com/questions/843 ... themselves
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»