Консоль перехватывает все мои сообщения об утверждении - PullRequest
0 голосов
/ 04 июля 2011

У меня есть простой макрос утверждения, который выводит сообщение.Обычно это работает, когда приложение не является консольным приложением (т. Е. У меня появляется всплывающее диалоговое окно с выражением, включающим сообщение, в котором я могу нажать «Повторить отладку»), но когда это так, консоль перехватывает все сообщения.,Это становится раздражающим, когда консоль прячется за IDE, и мне приходится выискивать ее, затем возвращаться в диалог подтверждения и нажимать «повторить попытку» для отладки.

Можно ли как-нибудь помешать ему перехватить сообщения, чтобы во всплывающем диалоге была вся информация.

Макрос такой:

#define MyAssert(_Exp, _Msg) assert(_Exp && _Msg)

РЕДАКТИРОВАТЬ: Снимок экрана

enter image description here

1 Ответ

3 голосов
/ 04 июля 2011

CRT пытается определить, куда вы хотите выводить утверждения, в зависимости от типа приложения. Это обнаруживается по типу исполняемого файла (/ SUBSYSTEM). Однако вы можете переопределить с помощью _set_app_type, чтобы CRT работал так, как будто ваше консольное приложение является приложением Windows. Скорее всего, вы просто хотите повлиять на утверждения и поэтому должны вызвать _CrtSetReportMode, чтобы изменить на _CRTDBG_MODE_WNDW

Вы не указали свою версию VS, но они доступны (с небольшими различиями имен в VS2003) для всех последних версий.

Martyn

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...