在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;
}
我想收到的是:“函数在标记为noexcept时抛出异常”,并将光标设置在有问题的行上。我得到的是一个带有一些常规文本的新窗口,没有一个提到问题或问题所在。
答案 0 :(得分: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
注意:诊断消息包括行号和列号。如果您双击错误消息,它将光标移至有问题的行。
答案 1 :(得分:1)
您的MSBuild详细度参数可能太高。转到菜单:工具->选项。然后在左窗格中选择:项目和解决方案->构建并运行。 在那里,您可以选择适当的MSBuild详细程度(从“安静”到“诊断”)
答案 2 :(得分:0)
试图解决您的难题:
我得到的是一个带有一些常规文本的新窗口,没有一个 提到问题或问题所在。
我发现90%的输出对我无用。
我认为您的意思是Output window,它总是用于显示有关构建过程的输出。
此外,您还可以对自己的应用程序进行编程,以在运行时将诊断消息写入“输出”窗格。为此,请在.NET Framework类库的Debug class命名空间中使用Trace class或System.Diagnostics的成员。
对于那些具有大量资源文件的大型解决方案或大型项目。生成有时会因未知错误而失败。故障排除需要输出窗口。
如果您认为其大部分信息都没有用,例如 P.PICARD 建议:转到Tools => Projects and Solutions => Build and Run设置其 build输出详细程度(!不要建立日志文件的详细程度)建议您将其更改为最小。
如果构建失败,并且想观看整个构建过程的详细信息。将其更改为详细,然后重建项目或解决方案。
我想收到的是:“函数在 标记为noexcept”,并将光标设置在有问题的行上。
您是否检查过Error List window?如果消失,请选择“视图”>“错误列表”,或按Ctrl ++ E。
在代码示例中添加两行:
int main()
{
int a = 2;
int b;
...
}
导航到“错误列表”窗口(建议您将其设置为 Build and Intellisense ):
我想这就是你想要的。错误列表窗口还会显示未初始化或未引用的变量,以改善您的编码。
此外,您可以看到它们的行号。然后双击错误消息,光标将导航到该行。
对于C ++程序,警告级别为w0到w4,可以将其设置为w4以获得较高的警告级别。(默认情况下应为w3)
右键单击project => properties => Configuration Properties => C / C ++ =>警告级别进行设置。 (感谢他的描述,高炉!)
将其更改为w0,没有任何显示。将其更改为w3,它将显示有关My::f
和b
的警告,但不会显示a
。(实际上,我不认为您对此进行了更改,因为w3是默认设置)到第4周,然后获得高警告级别并显示所有相关警告。