Почему я получаю предупреждение "Unreferenced Local Variable"? (C ++) - PullRequest
2 голосов
/ 22 мая 2009

Когда я делаю что-то вроде

#include<iostream>
int main()
{
    int x;
    return 0;
}

Я получаю предупреждение о том, что x является локальной переменной, на которую нет ссылок (я полагаю, потому что я создал переменную, а не использовал ее), почему это дает мне предупреждение?

Ответы [ 6 ]

27 голосов
/ 22 мая 2009

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

21 голосов
/ 22 мая 2009

Возможно, потому что вы зря тратите память.

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

16 голосов
/ 22 мая 2009

Возможно, это остановит что-то вроде этого

void some_func() {
    int a, b, c, d, e;
    ...
    do_something_with(a);
    do_something_with(b);
    do_something_with(c);
    do_something_with(d);
    do_something_with(c); // after hours of reading code, e looks like c: BUG!!
}
2 голосов
/ 22 мая 2009

Кроме того, я незаметно добавляю неиспользуемые переменные как быстрый и грязный механизм TODO при разработке кода ... Flame Off:

bool doSomething(...)
{
    int dontForgetToReplaceStubWithSomethingReal;
    return false;
}
0 голосов
/ 11 ноября 2014

Или, может быть, они ожидали, что его конструктор будет иметь побочный эффект при определении области действия, а деструктор - еще один побочный эффект при определении области действия, и не хотели, чтобы компилятор был настолько «полезен» с тем, что люди знают лучше всего, когда он появляется. в целях чужого кода.

0 голосов
/ 22 мая 2009

также дает вам знать, что если вы думаете , что вы используете переменную, а не вы, то узнаете. Предполагается, что вы создали переменную по какой-то причине и, возможно, вы забыли использовать ее где-то.

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