Sablog Models/플랫폼·툴킷

Visual Studio 10(2010)에서 "계속하려면 아무 키나 누르십시오..."가 안 보여요!

어­리 2012. 3. 15. 00:25

Visual Studio 2010에서 빈 프로젝트나 Win32 콘솔 응용 프로그램을 생성하면 이전의 Visual Studio에서와 달리 실행 파일이 마지막 표준 출력 결과를 볼 수 있도록 기다려 주지 않고 꺼진다.(단축키 Ctrl+F5) 이는 실행 파일의 출력이 지정되지 않았기 때문인데, 원래 콘솔 프로그램은 표준 출력을 콘솔로 내보내는 게 맞지만, 오늘날 콘솔 프로그램은 GUI의 프론트엔드로 쓰이는 일이 잦아지기 때문인지 Visual Studio 2010부터는 출력을 콘솔로 기본 지정하지 않고 있다.

이를 해결하려 한다면 당연히 출력을 콘솔로 지정하면 된다. 다음 둘 중 한 방법으로 프로젝트의 출력을 콘솔로 지정할 수 있다.

  1. Visual Studio 2010에서 프로젝트를 열고 메뉴 프로젝트> 속성> 구성 속성> 링커> 시스템: 하위 시스템
    필드를 찾아 값을 다음과 같이 준다.
    /SUBSYSTEM:CONSOLE
  2. XML 포맷인 .vcproj 파일을 텍스트 에디터로 열고 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">과 바로 다음의 </PropertyGroup> 사이, <Link>와 </Link> 밖에 다음을 추가한다. (Release에도 추가하는 건 자유)
    <Link>
    <SubSystem>Console</Subsystem>
    </Link>

반면에 프로젝트마다 이런 설정을 하기 귀찮다면 이 값을 기본으로 줄 수도 있다.

  • 텍스트 에디터를 관리자 권한으로 실행해 다음 ...\vcprojects 디렉터리에서
    • 64비트의 경우 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcprojects
    • 32비트의 경우 C:\Program Files\Microsoft Visual Studio 10.0\VC\vcprojects
    win32console.vsz 파일을 열고 아래 한 줄을 추가한다.
    Param="SUBSYSTEM = CONSOLE"
  • emptyproj.vsz 파일을 같은 방식으로 편집하면 빈 프로젝트에도 옵션이 적용되지만, 권장하지 않겠다.

Win32 콘솔 응용 프로그램을 생성하고 [확인], [다음]을 눌러 빈 프로젝트 체크박스를 선택하면 빈 프로젝트를 생성하는 것과 거의 같은 상태가 된다.

프리프로세서 #include <stdlib.h>를 주고 main() 끝에 system("pause");를 쓰면 프로젝트 기본 옵션을 바꾸지 않고 같은 효과를 볼 수 있다. 물론 실행 파일의 덩치가 커지기 때문에 완전히 같은 효과는 아니다. 나는 system("pause>nul");을 쓴다.