Visual C ++에서 시작하여 콘솔 창을 유지하는 방법을 알고 싶습니다.
예를 들어 다음은 일반적인 "hello world"응용 프로그램입니다.
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Hello World";
return 0;
}
내가 놓친 줄은 무엇입니까?
Visual C ++에서 시작하여 콘솔 창을 유지하는 방법을 알고 싶습니다.
예를 들어 다음은 일반적인 "hello world"응용 프로그램입니다.
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Hello World";
return 0;
}
내가 놓친 줄은 무엇입니까?
답변:
Ctrl+F5그냥 대신 프로젝트를 시작하십시오 F5.
Press any key to continue . . .
프로그램이 종료 된 후 메시지 와 함께 콘솔 창이 열린 상태로 유지 됩니다.
Console (/SUBSYSTEM:CONSOLE)
링커 옵션 이 필요 하며 다음과 같이 활성화 할 수 있습니다.
CTRL-F5와 서브 시스템 힌트는 함께 작동합니다. 그들은 별도의 옵션이 아닙니다.
( http://social.msdn.microsoft.com/Forums/en-US/vcprerelease/thread/21073093-516c-49d2-81c7-d960f6dc2ac6 에서 DJMorreTX 제공 )
cin.get(),getchar(), system("pause")
나 다른 가비지로 코드를 변경할 필요가 없습니다 . 이 변경하면 작동합니다.
system("pause");
코드 끝에 추가 하십시오. 의미가 있고 잘 작동합니다.
표준적인 방법은 cin.get()
귀하의 반환 진술 앞에 있습니다.
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Hello World";
cin.get();
return 0;
}
_tmain
. cin.get()
F5에 중단 점을 배치하거나 Ctrl F5를 사용 하는 대신 다른 -1로 투표했습니다 . 그러나 나는 단 하나의 downvote 만 허용됩니다.
_tmain
? 이것이 콘솔 하위 시스템을 대상으로하는 Windows 응용 프로그램을 작성하는 표준 방법입니다. 그 표준에서 벗어나는 것은 나쁜 습관입니다. 분명히 아무도 휴대용 코드에 대해 이야기하고 있지 않습니다. 질문은 Visual C ++라고 _tmain
하며 샘플 코드에 나타나는 서명입니다. 이 종교를 포기할 때입니다. Windows는 기본적으로 "비표준"이며 해당 표준 을 따르는 데는 상당한 이유 가 있습니다.
_tmain
의견은 완전히 비표준 적 이며 (국제 C ++ 표준에는 일반이 필요함 main
), Microsoft의 T
매크로 체계를 사용하기 때문에 Windows 9x를 지원하는 데 필요한 복잡성과 복잡성이 없기 때문 입니다. 표준에서 벗어나는 것이 나쁜 습관이라고 생각되면 절대로 사용해서는 안됩니다 tmain
. tmain
트롤링이나 전문가의 경우 전체 무능 성을 표시하는 것을 제외하고는 을 사용하는 데는 정당한 이유가 없습니다 .
다른 옵션은
#include <process.h>
system("pause");
Windows에서만 작동하기 때문에 이식성이 좋지 않지만 자동으로 인쇄됩니다.
계속하려면 아무 키나 누르십시오 ...
system
에 선언되어 <stdlib.h>
있습니다.
makefile 프로젝트의 경우 Visual Studio의 버그로 인해 승인 된 솔루션이 실패합니다 (2012 년까지는 아직 테스트 중입니다-아직 테스트하지 않은 2013). 이 버그는 여기 에 자세히 설명되어 있습니다 .
makefile 프로젝트에서 프로그램 종료 후 콘솔을 일시 중지하려면 다음 단계를 수행하십시오 (2010-2012 이외의 버전에서는 다를 수 있음).
1) - 편집 : 아래를 참조하십시오./SUBSYSTEM:CONSOLE
링커로 전달하십시오.
2) 텍스트 편집기에서 프로젝트 파일 (.vcxproj)을 엽니 다.
3) 루트 <project>
태그 안에 다음을 삽입하십시오.
<ItemDefinitionGroup> <Link> <SubSystem>Console</SubSystem> </Link> </ItemDefinitionGroup>
4) 솔루션에서 프로젝트를 다시로드하십시오.
5) 디버깅하지 않고 프로그램을 실행하십시오 (CTRL + F5).
편집하다:
아래 내 의견에 따라 링커 옵션 설정 /SUBSYSTEM:CONSOLE
은 실제로 makefile 프로젝트와 관련이 없으며 MSVC 이외의 컴파일러를 사용하는 경우 반드시 가능하지는 않습니다. 중요한 것은 위의 3 단계에 따라 설정이 .vcxproj 파일에 추가된다는 것입니다.
내 2 센트 :
선택 1 : 끝 부분에 중단 점 추가 main()
선택 2 :이 코드를 다음 바로 앞에 추가하십시오 return 0;
.
std::cout << "Press ENTER to continue..."; //So the User knows what to do
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
당신은 포함 할 필요가 <iomanip>
에 대한std::numeric_limits
cin.get()
또는 system("PAUSE")
. 나는 당신이 사용할 수 있다고 들었습니다return(0);
포함 #include <conio.h>
하고 나서 줄 getch();
바로 앞에 추가하십시오 return 0;
. 그것은 내가 어쨌든 학교에서 배운 것입니다. 위에서 언급 한 방법은 내가 보는 것과 상당히 다릅니다.
같은 문제가 있었다. _getch()
return 문 바로 전에 사용하고 있습니다. 효과가있다.
나는 같은 문제가 있었다. 내 응용 프로그램에는 여러 개의 exit () 지점이 있으며 정확하게 종료되는 위치를 알 수있는 방법이 없었으며 이에 대해 알았습니다.
atexit(system("pause"));
또는
atexit(cin.get());
이 방법으로 우리가 프로그램에서 나가는 곳이 어디든 중단됩니다.
atexit
. atexit
정수가 아닌 함수 포인터를 사용합니다.
다음은 코드를 수정하지 않고 실행이 중지되는 방식에 관계없이 명령 창을 열어 두는 방법입니다.
Visual Studio에서 프로젝트 속성 페이지 -> 디버깅을 엽니 다. .
대한 명령 을 입력$(ComSpec)
들어 명령 인수 입력/k $(TargetPath)
. 자신의 응용 프로그램에 인수를 추가하십시오.
이제 F5 또는 Ctrl-F5 는 새 창에서 Windows / System32 / cmd.exe 를 실행 하고 / k 는 실행이 완료된 후 명령 프롬프트가 열린 상태로 유지되도록합니다.
단점은 중단 점에서 실행이 중지되지 않는다는 것입니다.
keep_window_open ()을 넣을 수 있습니다. 반환하기 전에 여기에 하나의 예가 있습니다.
int main()
{
cout<<"hello world!\n";
keep_window_open ();
return 0;
}