-Wunused-variable编译器说ERROR

时间:2013-11-03 07:14:15

标签: c++ linux compiler-errors compiler-warnings

最近我开始使用C ++进行编程(我来自Java,它让我有点变化哈哈)。在Windows下一切正常。问题是我切换到Linux,这是我遇到编译器问题的地方。通常在声明变量并且未使用时,编译器会显示“警告”,表示该变量未被使用,但是我(在linuxmint 15下)将我视为“错误”并且不进行编译:C。我这样做不知道是否有人发生过这种情况,但我在制作大型节目(不止一节课)时感到恶心。

一个小例子: enter image description here

1 个答案:

答案 0 :(得分:1)

不可用变量警告是使用

调用GCC的结果
g++ -Wunused-variable ...

如果是这种情况,请不要指定该参数。或者是因为-Wall:

g++ -Wall ...

在这种情况下,请指定-Wno-unused-variable

它被抛出为错误,因为你也有'-Werror'参数。

这个警告有几个原因:可以在C ++中的作用域之间“隐藏”变量,因此当你有两个同名变量时,未使用变量的常见原因就是。

int i = 5;
for (int i = 0; i < 10; ++i) { // << this is SECOND variable called i that hides the previous
}
if (day == "Monday") {
    int i; // << you can't see the second i here, this is a third that also hides the first.
    ...
}
// std::cout << "i = " << i << std::endl; // we can see original i again here

这里有两个变量称为“i”。如果您取消注释最后一行,它将打印5,与名为'i'的两个附加变量无关。

如果没有std :: cout,原始的,外部的,我从未使用过。也许最后一个“int i”是一个错误。

另一个常见问题涉及在C ++中拥有全局变量的能力

int Whoops; // GLOBAL: NEVER EVER TOUCH THIS.

int func() {
    int whoops; // LOCAL: ALWAYS TOUCH THIS.
    Whoops = 42; // >W<hoops!
}

您会收到一条警告,“whoops”是一个未使用的变量,以帮助您检测到您修改了错误的变量。