Visual C ++에서 콘솔 창을 열어 두는 방법은 무엇입니까?
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)
링커 옵션 이 필요 하며 다음과 같이 활성화 할 수 있습니다.
- 프로젝트를 열고 솔루션 탐색기로 이동하십시오. K & R에서 나와 함께 팔로우하는 경우 "솔루션"은 프로젝트 1 개 아래에 'hello'이며 굵게 'hello'도 있습니다.
- 'hello'(또는 프로젝트 이름이 무엇이든)를 마우스 오른쪽 버튼으로 클릭하십시오.
- 상황에 맞는 메뉴에서 "속성"을 선택하십시오.
- 구성 특성> 링커> 시스템을 선택하십시오.
- 오른쪽 분할 창의 "서브 시스템"특성에 대해 오른쪽 열의 드롭 다운 상자를 클릭하십시오.
- "콘솔 (/ SUBSYSTEM : CONSOLE)"을 선택하십시오.
- 적용을 클릭하고 작업이 완료 될 때까지 기다린 다음 확인을 클릭하십시오. ( "적용"이 회색으로 표시되면 다른 서브 시스템 옵션을 선택하고 적용을 클릭 한 다음 되돌아 가서 콘솔 옵션을 적용하십시오. 제 경험으로는 저절로 작동하지 않습니다.)
CTRL-F5와 서브 시스템 힌트는 함께 작동합니다. 그들은 별도의 옵션이 아닙니다.
( http://social.msdn.microsoft.com/Forums/en-US/vcprerelease/thread/21073093-516c-49d2-81c7-d960f6dc2ac6 에서 DJMorreTX 제공 )
표준적인 방법은 cin.get()
귀하의 반환 진술 앞에 있습니다.
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Hello World";
cin.get();
return 0;
}
return
줄에 중단 점을 둡니다 .
디버거에서 실행하고 있습니까?
다른 옵션은
#include <process.h>
system("pause");
Windows에서만 작동하기 때문에 이식성이 좋지 않지만 자동으로 인쇄됩니다.
계속하려면 아무 키나 누르십시오 ...
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 파일에 추가된다는 것입니다.
콘솔 창이 닫히지 않도록 return 문 바로 앞 cin.get();
또는 을 사용할 수 있습니다 cin.ignore();
.
main의 마지막 중괄호에 중단 점을 두십시오.
int main () {
//...your code...
return 0;
} //<- breakpoint here
그것은 나를 위해 작동하며 디버깅하지 않고 실행할 필요가 없습니다. 또한 중단 점에 도달하기 전에 소멸자를 실행하므로 소멸자에 인쇄 된 메시지가 있는지 확인할 수 있습니다.
Simply add a Breakpoint to the closing bracket of your _tmain
method. This is the easier way plus you don't have to add code in order to debug.
Place a breakpoint on the ending brace of main()
. It will get tripped even with multiple return
statements. The only downside is that a call to exit()
won't be caught.
If you're not debugging, follow the advice in Zoidberg's answer and start your program with Ctrl+F5 instead of just F5.
My 2 Cents:
Choice 1: Add a breakpoint at the end of main()
Choice 2: Add this code, right before the 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');
You need to include <iomanip>
for std::numeric_limits
just add system("pause") at the end of the code before return 0 like this
#include <stdlib.h>
int main()
{
//some code goes here
system("pause")
return 0;
}
cin.get()
, or system("PAUSE")
. I haven't heard you can use return(0);
I include #include <conio.h>
and then, add getch();
just before the return 0;
line. That's what I learnt at school anyway. The methods mentioned above here are quite different I see.
Had the same problem. I am using _getch()
just before the return statement. It works.
(Some options are may be called by different names. I do not use the english version)
I had the same problem, when I created projects with the option "empty project", Create project as "Win32-console application" instead of "empty project" . In the dialog which pops up now, you press "continue" and after that you may check the option "empty project" and press confirm. After that CTRL + F5 will open a console which does not close automatically.
I had the same problem; In my application there are multiple exit() points and there was no way to know where exactly it exits, then I found out about this:
atexit(system("pause"));
or
atexit(cin.get());
This way it'll stop no matter where we exit in the program.
Another option:
#ifdef _WIN32
#define MAINRET system("pause");return 0
#else
#define MAINRET return 0
#endif
In main:
int main(int argc, char* argv[]) {
MAINRET;
}
Actually, the real solution is the selection of the project template itself. You MUST select Win32 Console Application in older VS, or fill in the project name first and then double click on Windows Desktop wizard and then select Win32 console application. Then select empty project at this point. This then allows for what the original questioner really wanted without adding extra stopping point and hold code. I went through this problem as well. The answer is also at MSDN site.
Here's a way to keep the command window open regardless of how execution stops without modifying any code:
In Visual Studio, open Project Property Pages -> Debugging.
For Command, enter $(ComSpec)
For Command Arguments, enter /k $(TargetPath)
. Append any arguments to your own application.
Now F5 or Ctrl-F5 executes Windows/System32/cmd.exe in a new window, and /k ensures that the command prompt stays open after execution completes.
The downside is that execution won't stop on breakpoints.
int main()
{
//...
getchar();
return 0;
}
you can just put keep_window_open (); before the return here is one example
int main()
{
cout<<"hello world!\n";
keep_window_open ();
return 0;
}
참고URL : https://stackoverflow.com/questions/454681/how-to-keep-the-console-window-open-in-visual-c
'Programming' 카테고리의 다른 글
부트 스트랩 모달에서 특정 필드의 포커스를 설정하는 방법 (0) | 2020.05.17 |
---|---|
클릭시 버튼 주위의 초점을 제거하는 방법 (0) | 2020.05.17 |
일반 영어로 된 "웹 서비스"란 무엇입니까? (0) | 2020.05.17 |
JSP로 URL에서 매개 변수를 얻는 방법 (0) | 2020.05.17 |
Oracle에서 테이블 이름의 최대 길이는 얼마입니까? (0) | 2020.05.17 |