Как я печатаю к окну вывода отладки в приложении Win32?

Это - плохой дизайн под любым языком.

Исключение разработано, чтобы быть пойманным на уровне, который можно иметь дело с ними. Ловля исключения, только для броска его снова является просто бессмысленной пустой тратой времени (это также заставляет Вас терять ценную информацию о местоположении исходной ошибки).

, По-видимому, парень, который написал тот код, раньше использовал коды ошибки, и затем переключенный на исключения, на самом деле не понимая, как они работают. Исключения автоматически "пузырь" стек, если существует не, ухватываются за один уровень.

кроме того, обратите внимание, что исключения для исключительные случаи. Вещь, которая должна никогда , происходит. Они не должны привыкнуть на месте к нормальной проверке законности (т.е. не ловите исключение деления на нуль; проверьте, чтобы видеть, является ли делитель нулем заранее).

85
задан Martin Liversage 15 October 2010 в 00:18
поделиться

3 ответа

Вы можете использовать OutputDebugString . OutputDebugString - это макрос, который в зависимости от параметров сборки сопоставляется с OutputDebugStringA (char const *) или OutputDebugStringW (wchar_t const *) . В последнем случае вам нужно будет передать функции строку широких символов. Чтобы создать литерал широких символов, вы можете использовать префикс L :

OutputDebugStringW(L"My output string.");

Обычно вы будете использовать версию макроса вместе с макросом _T следующим образом:

OutputDebugString(_T("My output string."));

Если вы проецируете настроенный для сборки для UNICODE, он будет расширен до:

OutputDebugStringW(L"My output string.");

Если вы не строите для UNICODE, он расширится до:

OutputDebugStringA("My output string.");
128
ответ дан 24 November 2019 в 08:16
поделиться

Чтобы печатать на реальной консоли, вам нужно сделать ее видимой с помощью флага компоновщика / SUBSYSTEM: CONSOLE . Дополнительное окно консоли раздражает, но для целей отладки оно очень ценно.

OutputDebugString выводит на вывод отладчика при работе внутри отладчика.

12
ответ дан 24 November 2019 в 08:16
поделиться

Ваш проект Win32, скорее всего, является проектом с графическим интерфейсом пользователя, а не консольным проектом. Это вызывает разницу в исполняемом заголовке. В результате ваш проект графического интерфейса будет отвечать за открытие собственного окна. Хотя это может быть консольное окно. Вызовите AllocConsole () , чтобы создать его, и используйте функции консоли Win32 для записи в него.

2
ответ дан 24 November 2019 в 08:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: