c++ - -Wunused-variable 编译器说错误

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

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

举个例子: enter image description here

最佳答案

未使用的变量警告是调用 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”是一个未使用的变量,以帮助检测您是否修改了错误的变量。

关于c++ - -Wunused-variable 编译器说错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19750690/

相关文章:

java - 如何将变量从一个方法(具有参数)传递给main方法?

C - 动态内存字符串的不可寻址字节

c++ - 使用字符串文字在构造函数中初始化 std::array<char,x> 成员。海湾合作委员会错误?

c++ - 采用左值操作数的运算符的结果是一个左值,表示该左值操作数?

linux - debian wheezy - 如何挂载未使用的磁盘?

linux - 从通过 arg 提供的日期计算第二天日期的技术?

javascript - Angular 2 AoT 编译器动画回调错误

c++ - 根据 boost::filesystem,为什么这个文件不是常规文件?

c++ - 使用 VTK 连接流媒体点

linux - 与 sort -u 和 uniq -u 的意外差异