【发布时间】:2009-05-21 20:40:47
【问题描述】:
当我做类似的事情时
#include<iostream>
int main()
{
int x;
return 0;
}
我收到关于 x 是未引用的局部变量的警告(我假设是因为我创建了一个变量,然后没有使用它),但为什么这会给我一个警告?
【问题讨论】:
标签: c++ variables initialization
当我做类似的事情时
#include<iostream>
int main()
{
int x;
return 0;
}
我收到关于 x 是未引用的局部变量的警告(我假设是因为我创建了一个变量,然后没有使用它),但为什么这会给我一个警告?
【问题讨论】:
标签: c++ variables initialization
因为通常人们不会故意创建未引用的变量。因此,如果程序中存在未引用的变量,通常表明您在某处存在错误,编译器会警告您。
【讨论】:
可能是因为你白白浪费内存。
此外,代码变得肮脏且难以理解,更不用说程序员通常不会定义他们不需要的变量,所以它有点像“这真的是你的意思吗?”警告。
【讨论】:
可能是这样停止的:
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!!
}
【讨论】:
顺便说一句,我在开发代码时偷偷地把未使用的变量作为一种快速且肮脏的 TODO 机制...
bool doSomething(...)
{
int dontForgetToReplaceStubWithSomethingReal;
return false;
}
【讨论】:
它还让您知道,如果您认为您正在使用一个变量而不是您会发现。假设您创建变量是有原因的,也许您忘记在某处使用它。
【讨论】:
或者,也许他们希望它的构造函数在作用域内产生副作用,而它的析构函数在作用域外产生另一个副作用,并且不希望编译器对人们最了解的东西如此“有帮助”符合其他人代码的意图。
【讨论】: