2013-05-02 7 views
0

Когда я скомпилирую программу и запускаю exe-файл, она автоматически закрывается. Есть ли способ избежать этого? Я знаю, что вы можете поставить system("pause"), но я слышал, что его рекомендуется не использовать, или вы можете положить в конец и дождаться, когда пользователь нажмет что-то перед закрытием. Но существует ли какой-либо «реальный» официальный способ остановить программу?Пауза C++ программ в конце, после компиляции

+8

Запустите его с консоли командной строки :) – Ryan

+0

, которая будет работать для меня, но если я дам exe-файл кому-либо, чтобы запустить, я не хочу, чтобы они использовали командную строку. – FJam

+1

Вы можете дать им пакетный файл, который команда 'pause' в конце. Таким образом, вы избегаете использования 'system (" pause ")' в вашем коде, и если кто-то хочет запустить его из командной строки, они могут. – austin

ответ

1

Ваша программа делает то, что вы хотите. Это означает, что для 'C++' завершается, когда больше нет команд для запуска.

У вас есть много способов остановить вашу программу (ожидание сигнала, получение данных из сокета, ...). Чтение от stdin, вероятно, является самым простым способом.

system("pause") не рекомендуется, потому что он просто вызывает системную функцию Pause, и в некоторых средах такой функции не может быть.

+1

Или хуже, функция, которая делает что-то ужасное. – chris

2

Вы используете Visual Studio? если да и его версию, прежде чем 2010 затем CTRL + F5 будет делать трюк

, если его версия после ....

это может помочь

http://connect.microsoft.com/VisualStudio/feedback/details/540969/missing-press-any-key-to-continue-when-lauching-with-ctrl-f5

решение
+0

nope, я использую кодовые блоки и терминал unix (Vim) – FJam

+0

, тогда мне жаль ... поскольку мой ответ вообще не применим к вашему вопросу ... это помогло бы включить вашу развивающуюся среду в вопрос, хотя .... – Mamonu

+0

CodeBlocks добавит паузу при запуске из среды IDE в Windows. Я думаю, что вопрос был скорее для исполняемого файла. – chris

-1

Windows, для visual studio compiler только :

fflush(stdin); 
getchar() 
+0

С каких пор вы можете сбросить stdin? –

+0

@ThomasMatthews Согласно msdn: fflush на входном потоке является расширением стандарта C –

0

Если вы "Start Without Debugging" Ctrl + F5, после того, как программа выходит из окна консоли, остается открытым, и отображается сообщение Press any key to continue . . ., пока вы не нажмете какую-либо кнопку. Это лучшее решение, поскольку оно не требует модификации кода, а если вы отлаживаете, вы можете установить точку останова в любом месте.

Работает со всей версией Visual Studio, довольно стандартная вещь.

Смежные вопросы