c – 未检测到未使用的变量

前端之家收集整理的这篇文章主要介绍了c – 未检测到未使用的变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用g 4.3.0编译这个例子:
  1. #include <vector>
  2.  
  3. int main()
  4. {
  5. std::vector< int > a;
  6. int b;
  7. }

如果我用最大警告级别编译示例,我会收到一个警告:不使用变量b:

  1. [vladimir@juniper data_create]$g++ m.cpp -Wall -Wextra -ansi -pedantic
  2. m.cpp: In function int main()’:
  3. m.cpp:7: warning: unused variable b
  4. [vladimir@juniper data_create]$

问题是:为什么变量a没有报告为未使用?
我必须传递哪些参数才能获得变量a的警告?

解决方法

理论上,std :: vector< int>的默认构造函数可能有任意的副作用,因此编译器无法弄清楚删除a的定义是否会改变程序的语义.您只能获得内置类型的警告.

一个更好的例子是锁:

  1. {
  2. lock a;
  3. // ...
  4. // do critical stuff
  5. // a is never used here
  6. // ...
  7. // lock is automatically released by a's destructor (RAII)
  8. }

即使a在定义之后从未使用过,但删除第一行也是错误的.

猜你在找的C&C++相关文章