当我做
之类的事情时#include<iostream>
int main()
{
int x;
return 0;
}
我得到一个关于x是一个未引用的局部变量的警告(我假设因为我创建了一个变量,然后没有使用它),为什么这会给我一个警告呢?
答案 0 :(得分:27)
因为通常人们不会故意创建未引用的变量。因此,如果程序中存在未引用的变量,通常表明您在某处有错误,并且编译器会向您发出警告。
答案 1 :(得分:21)
可能是因为你在浪费记忆力。
此外,代码变得肮脏且难以理解,更不用说程序员通常不会定义他们不需要的变量,所以它就是“这真的是你的意思吗?”警告。
答案 2 :(得分:16)
可能会停止这样的事情:
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!!
}
答案 3 :(得分:2)
顺便说一句,我偷偷地将未使用的变量作为一个快速的TODO机制投入,同时开发代码......火焰消失:
bool doSomething(...)
{
int dontForgetToReplaceStubWithSomethingReal;
return false;
}
答案 4 :(得分:0)
它还会让你知道,如果你想你正在使用变量而不是你会发现。假设您出于某种原因创建了变量,也许您忘了在某处使用它。
答案 5 :(得分:0)
或者,也许他们期望它的构造函数在作用域时有副作用,并且它的析构函数在作用域时会产生另一个副作用,并且不希望编译器对人们最熟悉的东西如此“有用”达到其他代码的目的。