0

最近我开始用C++编程(我来自Java,这花了我一点点改变哈哈)。在 Windows 下一切正常。问题是我切换到 Linux,这就是编译器出现问题的地方。通常当您声明一个变量但未使用时,编译器会显示一个“警告”,说明该变量未使用,但我(在 linuxmint 15 下)将我抛出为“错误”并且没有编译:C. 我做不知道是否有人发生过这种情况,但是我在制作大型程序(不止一堂课)时生病了。

一个小例子: 在此处输入图像描述

4

1 回答 1

2

未使用的变量警告是调用 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,则永远不会使用原始的外部 i。也许最后一个“int i”是一个错误。

另一个常见问题与在 C++ 中具有全局变量的能力有关

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

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

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

于 2013-11-03T07:25:32.733 回答