Я считаю вывод VS19 совершенно бесполезным при работе над проектом C++. Рассмотрим запуск примера кода на только что установленном 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», и курсор установлен на проблемной строке. Что я получаю, так это новое окно с некоторым общим текстом, ни в одном из которых не упоминается проблема или где проблема.
Какой уровень предупреждения компилятора вы указали? Если я использую параметр /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
Примечание: диагностические сообщения включают номера строк и столбцов. Если дважды щелкнуть сообщение об ошибке, курсор переместится на строку с ошибкой.
Ваш параметр детализации MSBuild может быть слишком высоким. Перейдите в меню: Инструменты -> Параметры. Затем на левой панели выберите: Проекты и решения -> Сборка и запуск. Там вы можете выбрать подходящую степень детализации MSBuild (от тихой до диагностической).
Пытаясь решить вашу загадку в вашем вопросе:
What I get is a new window with some general text, none of which mentions the problem, or where the problem is.
I find 90% of output useless for me.
Я думаю, что вы имеете в виду Окно вывода, он всегда используется для отображения вывода о процессе сборки.
Кроме того, вы также можете запрограммировать свои собственные приложения для записи диагностических сообщений во время выполнения на панель вывода. Для этого используйте элементы Класс отладки или Класс трассировки в пространстве имен Система.Диагностика библиотеки классов .NET Framework.
Для тех больших решений или больших проектов, в которых много файлов ресурсов. Сборка иногда завершается сбоем с неизвестной ошибкой. Окно вывода необходимо для устранения неполадок.
Если вы считаете, что большая часть его информации бесполезна, как предлагает П.ПИКАРД: перейдите в Инструменты => Проекты и решения => Сборка и запуск, чтобы установить его построить многословие вывода (! Не строить подробность файла журнала), я предлагаю вам изменить его на Минимальный.
Если у вас возникла неудачная сборка и вы хотите посмотреть подробности всего процесса сборки. Измените его на Подробный и перестройте проект или решение.
What I would like to receive is: "Function throws an exception while marked as noexcept", and the cursor set on the problematic line.
Вы проверили Окно списка ошибок? Если оно исчезло, выберите «Вид» > «Список ошибок» или нажмите Ctrl++E.
Добавьте две строки в пример кода:
int main()
{
int a = 2;
int b;
...
}
Перейдите в окно списка ошибок (я предлагаю вам установить его как Сборка и Intellisense):
Я думаю, это то, что вы хотите. И окно списка ошибок также указывает переменную, которая не инициализирована или на которую не ссылаются для улучшения вашего кодирования.
Кроме того, вы можете увидеть их номера строк. И дважды щелкните сообщение об ошибке, курсор переместится на эту строку.
Для программы C++ уровень предупреждения от w0 до w4, вы можете установить его w4, чтобы получить высокий уровень предупреждения (по умолчанию должен быть w3).
Щелкните правой кнопкой мыши проект=>свойства=>Свойства конфигурации=>C/C++=>Уровень предупреждения, чтобы установить его. (Описано Взрывная фура, спасибо ему!)
Измените его на w0, ничего не показывает. Измените его на w3, и он будет отображать предупреждения о My::f
и b
, но не a
. (На самом деле я не думаю, что вы вносите изменения в это, потому что w3 по умолчанию) Измените его на w4, затем получите высокий уровень предупреждения и все связанные с ним отображаются предупреждения.
Спасибо, это помогло. Я перешел из другой IDE, где проблемы показывались мне в лицо в удобной для пользователя форме :) Меня озадачило исчезновение окна со списком ошибок. Важнейшее информационное окно, которое я должен включить через меню, чтобы найти, в чем проблема? Но кто я такой, чтобы судить, хоть способ есть :) Спасибо огромное!
Рад узнать, что это помогает. Хорошего дня:)