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