–Wunusedvariables编译器说错误

最近我开始用C + +编程(我来自Java,这花了我一点点改变哈哈)。 在Windows下一切正确。 问题是,我切换到Linux,这是我有问题的编译器。 通常当你声明一个variables而没有使用时,编译器会显示一个“警告”,表示这个variables没有被使用,但是我(在linuxmint 15下)把我当作“错误”抛出,并且没有编译:C不知道有没有人发生过这样的事情,但是在制作大型节目时(不止一节课)我生病了。

一个小例子: 在这里输入图像说明

未使用的变量警告是调用GCC的结果

 g++ -Wunused-variable ... 

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

 g++ -Wall ... 

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

它被当作一个错误被抛出,因为你也有“错误”的论点。

这个警告有几个原因:可以在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 

这里有两个变量叫“我”。 如果您取消注释最后一行,则会打印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! } 

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