如何让Visual Studio 2010警告未使用的变量?

Fab*_*ian 6 c++ stdstring visual-studio-2010 compiler-warnings

#include <string>

using namespace std;

int main()
{
    string s; // no warning
    int i;    // warning C4101

    return 0;
}
Run Code Online (Sandbox Code Playgroud)
  1. 为什么Visual Studio会警告我未使用的变量,is示例中没有?
  2. 我假设编译器不确定字符串构造函数的副作用.这是不显示警告的原因吗?
  3. 我能以某种方式启用有关未使用的字符串变量的警告?

我的警告级别设置为4.

Pas*_* By 4

我假设编译器只警告普通可构造/可破坏类型的未使用变量。

template<typename>
struct Empty
{

};

template<typename T>
struct Trivial : Empty<T>
{
    int* p;
    int i;
};

template<typename>
struct NonTrivial
{
    NonTrivial() {}
};

template<typename>
struct TrivialE
{
    TrivialE& operator=(const TrivialE&) {}
};

struct NonTrivial2
{
    NonTrivial2() {}
};

struct NonTrivialD
{
    ~NonTrivialD() {}
};

int main()
{
    Empty<int> e;      // warning
    Trivial<int> t;    // warning
    NonTrivial<int> n; // OK
    TrivialE<int> te;  // warning
    NonTrivial2 n2;    // OK
    NonTrivialD nd;    // OK
}
Run Code Online (Sandbox Code Playgroud)

编译器处理方式比较

可以看出,它们是一致的。

由于std::string不可能被轻易破坏,因此编译器不会对此发出警告。

所以回答你的问题:你不能。