代码之家  ›  专栏  ›  技术社区  ›  BЈовић

未检测到未使用的变量

  •  6
  • BЈовић  · 技术社区  · 14 年前

    我正在使用g++4.3.0编译此示例:

    #include <vector>
    
    int main()
    {
      std::vector< int > a;
      int b;
    }
    

    如果我编译了具有最大警告级别的示例,则得到一个警告:变量 未使用:

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

    问题是:为什么变量 未报告为未使用? 要获取变量的警告,必须传递哪些参数

    3 回复  |  直到 14 年前
        1
  •  23
  •   fredoverflow    14 年前

    理论上,默认的构造函数 std::vector<int> a 会改变程序的语义。您只会收到内置类型的警告。

    一个更好的例子是锁:

    {
        lock a;
        // ...
        // do critical stuff
        // a is never used here
        // ...
        // lock is automatically released by a's destructor (RAII)
    }
    

    尽管

        2
  •  1
  •   jilles de wit    14 年前

    a不是内置类型。你实际上是在调用 std::vector<int> 编译器认为这是一种用法,因为构造函数可能会产生副作用。

        3
  •  1
  •   CashCow    14 年前