Visual Studio 2010 завершает работу после завершения программы - PullRequest
8 голосов
/ 14 апреля 2010

Я пробую Visual Studio 2010, собирая программу на Си. После того, как он отобразит решение в командном окне «DOS», окно будет немедленно закрыто. В Visual Studio 2008 появляется сообщение, нажмите любую клавишу для продолжения, а нажатие клавиши закрывает окно командной строки. Как мне установить это поведение в 2010 году?

Ответы [ 8 ]

19 голосов
/ 06 июля 2010

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

Чтобы сделать это из Microsoft Visual C ++ 2010 Express (я предполагаю, что это похоже на Visual Studio 2010), откройте ваш проект и перейдите в следующее меню:

Project->$YOURPROJECTNAME Properties...
    ->Configuration Properties
        ->Linker
            ->System->SubSystem

Затем используйте раскрывающийся список, чтобы выбрать Консоль (/ SUBSYSTEM: CONSOLE) и применить изменение.

"Начать без отладки" теперь нужно делать правильно.

3 голосов
/ 16 марта 2011

Причина, по которой это происходит, заключается в том, что теперь в VS 2010 по умолчанию можно создать пустой, общий проект C ++, не прибегая к помощи мастера. Это приводит к тому, что VS 2010 неправильно устанавливает флаг Console (/SUBSYSTEM:CONSOLE), поэтому VS2010 даже не подозревает, что это консольное приложение, для которого оно отправляет обычное приглашение «Нажать любую клавишу ...».

Эта проблема не возникает при создании типа проекта консольного приложения из меню «Новый проект».

Но тогда вы можете установить этот флаг сами и многие другие через Project / Settings, как правильно ответил на этот пост!

2 голосов
/ 25 января 2012

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

#include <stdio.h>
#include <stdlib.h>

... main(...)
{
    your codes
         .
         .
         .

     system("pause");

}

если вы добавите этот код, ваш черный экран останется открытым. "system (" pause ")" внутри заголовочного файла stdlib.h.

2 голосов
/ 14 апреля 2010

Это нормально. Окно консоли "DOS" прикреплено к вашей программе и должно завершиться после ее завершения. Если вы хотите, чтобы он оставался открытым, вам нужно добавить код в вашу программу, чтобы он оставался открытым. Все, что вам нужно сделать, это добавить оператор печати и затем оператор ввода в конец вашей программы.

1 голос
/ 02 мая 2012

Вывести «Пуск без отладки» в меню «Отладка» ...

Инструменты >> Настройка >> Команды (вкладка) >> Строка меню (раскрывающийся список) >> Отладка (опция элементов управления) >> Добавить команду (кнопка) >> Отладка (список категорий) >> Запуск без отладки

Использование «Пуск без отладки» позволит VS2010 отобразить фразу «Нажмите любую клавишу для продолжения» перед выходом.

1 голос
/ 15 апреля 2010

FWIW, команда «Пуск без отладки» работает в VS2010 точно так же, как и для меня в предыдущих версиях Visual Studio (то есть для консольного проекта консоль остается открытой, когда процесс завершается с помощью «Нажмите любую клавишу». продолжить ... ".))

Итак, как именно вы получаете VS2010 для запуска вашей программы? Если вы используете ярлык «Ctrl-F5», можете ли вы убедиться, что Ctrl-F5 связан с Debug.StartWithoutDebugging в «Параметры / Среда / Клавиатура»?

Кроме того, вы можете попробовать запустить программу с помощью меню («Отладка / Запуск без отладки»)?

0 голосов
/ 14 апреля 2010

Вы можете добавить эту функцию и вызвать ее прямо перед возвращением из main ():

void keep_window_open()
{
    // clear buffer
    fflush(stdin);
    printf("Please enter a character to exit\n");
    char ch;
    ch = getchar();
    return;
}

Я адаптировал его из версии C ++ в заголовочном файле утилиты на сайте Бьярна Страуструпа: http://www.stroustrup.com/Programming/std_lib_facilities.h

0 голосов
/ 14 апреля 2010

Если вы запустите свое приложение без отладчика («Запуск без отладки»), окно консоли будет оставаться открытым до тех пор, пока вы не нажмете клавишу.

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