每当我编译代码时,我都会注意到以下两个警告:
warning: '<variable>' defined but not used
warning: unused variable '<variable>'
我试图谷歌但我没有找到任何有用的帖子或博客,关于这两个警告之间有什么区别。
一些示例代码段的示例将为我做,或者如果我复制一些现有的线程,请随时参考。
答案 0 :(得分:1)
我认为差异有点微妙,但这里是代码片段和编译器输出,它们展示了一些差异:
#include <iostream>
static const char * hello = "Hello";
void foo() {
int i;
std::cout << "foo" << std::endl;
}
...
argenet@Martell ~ % g++ /tmp/def_not_used.cpp -Wall
/tmp/def_not_used.cpp: In function ‘void foo()’:
/tmp/def_not_used.cpp:6:9: warning: unused variable ‘i’ [-Wunused-variable]
int i;
^
/tmp/def_not_used.cpp: At global scope:
/tmp/def_not_used.cpp:3:21: warning: ‘hello’ defined but not used [-Wunused-variable]
static const char * hello = "Hello";
所以这里从不使用局部变量,因此编译器可以在生成代码时简单地省略它,并且它会发出一个&#34;未使用的变量&#34;警告。
同时,静态C风格的文字不能轻易省略,因为它可用于更广泛的范围(整个.cpp文件)。 但是,它不会被此模块中的任何代码引用,因此编译器会对其进行警告,例如&#34;已定义但未使用&#34;。