有什么方法可以使Visual Studio C ++错误输出有用?

Pro*_*Sir -1 c++ visual-studio visual-studio-debugging

在C ++项目上工作时,我发现VS19输出非常无用。考虑在新安装的VS19上运行示例代码:

#include <iostream>  

using namespace std;
class My
{
    public:
    void f() noexcept
    {
        throw exception{"A problem sir!"};
    }
};

int main() 
{
    try 
    {
        My m;
        m.f();
    }
    catch (exception& ex)
    {
        cout << "exception caught! " << ex.what() << endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望收到的是:“函数在标记为noexcept时抛出异常”,并且将光标设置在有问题的行上。我得到的是一个带有一些常规文本的新窗口,没有一个提到问题或问题所在。

Bla*_*ace 6

您指定了什么编译器警告级别?如果使用该/W0选项,则没有诊断,但具有任何其他值,/W1通过/W4,编译器将输出以下行:

1>filename.cpp(9,1): warning C4297:  'My::f': function assumed not to throw an exception but does
1>filename.cpp(9,1): message :  __declspec(nothrow), throw(), noexcept(true), or noexcept was specified on the function
Run Code Online (Sandbox Code Playgroud)

注意:诊断消息包括行号和列号。如果双击错误消息,它将光标移至有问题的行。