Visual Studio에서 프로그램이 끝나고 콘솔 창 유지하기

다양한 언어를 지원하면서 강력한 디버깅 기능을 가지고 있는 비주얼 스튜디오는 이클립스와 더불어 가장 많이 사용되는 IDE(통합 개발환경, Integrated Developing Environment)입니다. 아직도 대다수의 사람들이 프로그래밍을 배울 때 C나 C++로 시작합니다. Visual Studio는 C와 C++, C#과 닷넷 등에 대한 강력한 개발환경을 지원하는데다, DreamSpark 프로그램을 통해 교육기관이나 학생들에게 무료로 배포되기 때문에 많은 사랑을 받고 있죠. 최근에는 Python, Typescript(Javascript) 등으로 지원 언어를 확장하는 등 지속적으로 발전하고 있습니다.

프로그래밍을 처음 배우는 분들은 보통 과거 도스 환경을 연상케 하는, "까만 바탕에 하얀 글씨"가 나오는 CLI(Command-Line Interface) 콘솔 응용 프로그램을 만들게 됩니다.

일반적인 콘솔 응용 프로그램의 예

일반적으로 코딩을 하는 경우 먼저 코드를 작성 한 뒤, 프로그램을 실행 해 자신의 코드가 잘 동작하는 지 확인하고 오류를 잡기 위한 '디버깅'과정을 반복하게 됩니다.

Visual Studio에서는 Ctrl + F5키를 이용해 프로그램을 실행, 즉 **"디버깅 하지 않고 시작(Start without debugging)"**할 수 있습니다. 그러면 명령 프롬프트가 실행되면서 창에서 결과값을 확인할 수 있죠. 그런데 프로그램이 종료되면서 이 콘솔 창이 사라지게 되면 프로그램이 종료되기 전까지의 결과를 확인할 수 없게 됩니다. 그래서 아래 그림처럼 Visual Studio는 자동으로 프로그램이 종료되기 직전에프로그램을 멈추어 줍니다.

비주얼 스튜디오에서 종료 직전에 프로그램을 자동으로 멈춘 모습

즉, 비주얼 스튜디오가 소스코드에 다음과 같이 system("pause")를 자동으로 추가해 주는 것입니다.

#include <stdio.h>
int main(...) {
    //작성한 코드
    system("pause");
    return 0;
}

하지만 프로젝트 생성 시 콘솔 응용 프로그램으로 생성하지 않는 경우 Build 할 때의 flag가 달라져 Ctrl + F5를 이용해 실행하는 경우에도 프로그램이 종료되면 자동으로 콘솔 창이 꺼지는 경우가 있습니다.

이런 경우 위 코드처럼 소스코드 마지막에 system("pause")를 추가하거나 다음과 같이 프로젝트 속성을 바꿔 주면 됩니다.

  1. 메뉴의 **[프로젝트(Project)] – ['프로젝트 이름' 속성(Properties)]**으로 들어갑니다.

  1. 왼쪽의 ==[구성 속성(Configuration Properties)] – [링커(Linker)]에서 [시스템(System)]==을 선택하고, 오른쪽의 ==[하위 시스템(Subsystem)]==에서 콘솔 Console (/SUBSYSTEM:CONSOLE)을 선택합니다.

  1. 이제 Ctrl + F5를 눌러 프로그램을 실행하면 종료 후 창이 사라지지 않는 것을 확인할 수 있습니다.

비주얼 스튜디오에서 종료 직전에 프로그램을 자동으로 멈춘 모습