Как добиться паузы перед завершением программы
При запуске консольного проекта из Visual Studio в конце работы программы окно может автоматически закрыться. Так быстро, что юный программист даже не успеет увидеть результат работы свой программы. Для борьбы с этим практикуют разные способы. Как ни странно, у новичков и у профессионалов разные подходы.
- Самый отвратительный способ - вставка кода "system("pause")" перед завершением программы. Так юный программист не только модифицирует код, но и вставляет жуткий костыль, который при других способах запуска или на другой ОС работать не будет.
- Правильный, но неудобный способ: воткнуть точку останова (breakpoint) отладчика перед завершением.
- Тоже правильный, и при этом удобный способ: запускать программу без отладчика (хоткей "Ctrl+F5" вместо "F5")
"Почему Ctrl+F5" не работает?
Иногда запуск без отладки не работает, как надо: консоль не выводит надпись "Press any key to continue..." и просто закрывается без ожидания.
Скорее всего, вы создавали проект через шаблон "Empty Project". В ОС Windows каждое приложение привязано к одной из подсистем. Это могут быть:
- MS-DOS совместимая подсистема CONSOLE
- Обычная подсистема WINDOWS для графических приложений.
- Специальные подсистемы для драйверов, для POSIX-приложений и других задач.
Шаблон Empty Project создаёт приложения для подсистемы WINDOWS, а не подсистемы CONSOLE. Эта подсистема не подразумевает создания окна консоли при запуске, потому что графическим приложениям оно ни к чему. При запуске программы из VS через Ctrl+F5 консоль всё же появляется, но закрывается без обычного "Press any key to continue...".
Чтобы исправить подсистему, зайдите в настройки проекта, на вкладку Linker, в раздел System и смените значение свойства "SubSystem" на "Console". Если у вас русскоязычная Visual Studio, я Вам искренне сочувствую.
Прочее
Остальные советы будут менее подробными, так как я не могу описать все технические детали в рамках одного поста.
- Стремитесь использовать в консольных приложениях автоматические тесты вместо ручного тестирования. Тесты могут быть реализованы как модульные тесты (например, с библиотекой Boost.Test) или как автоматический запуск собранной программы и проверка её вывода с ожидаемым (такие тесты можно сделать на основе bat-файлов, shell-скриптов или скриптов на Python).
Комментариев нет:
Отправить комментарий