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;
}