当函数返回本地或临时地址或对本地变量的引用时,会出现C4172 Visual C++警告。

像这样的东西:

int& fun()
{
    int var;
    return var; //C4172
}

现在看来,使用#pragma warning使Visual C++将C4172视为错误并中断编译是一个好主意。

在C4172实际不是错误的情况下,是否存在任何合理的方案?

最佳答案

我不确定为什么有人会这样做:

int * stackTester()
{
    int dummy;
    return &dummy;
}

bool stackGoesUp()
{
    int dummy;
    return stackTester() > &dummy;
}

但是一般来说,您应该将警告视为错误。

关于c++ - 在任何情况下都不应将C4172 Visual C++警告视为错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14690213/

10-10 08:08