我开始在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;
}
我漏了哪一行?
当前回答
另一个选择:
#ifdef _WIN32
#define MAINRET system("pause");return 0
#else
#define MAINRET return 0
#endif
主要:
int main(int argc, char* argv[]) {
MAINRET;
}
其他回答
我也有同样的问题;在我的应用程序中有多个exit()点,没有办法知道它到底在哪里退出,然后我发现了这一点:
atexit(system("pause"));
or
atexit(cin.get());
这样,无论我们退出程序的哪个位置,它都会停止。
另一种选择是使用
#include <process.h>
system("pause");
虽然这不是很可移植,因为它只能在Windows上工作,但它会自动打印
按任意键继续…
下面是一种不修改任何代码而保持命令窗口打开的方法:
在Visual Studio中,打开项目属性页-> Debugging。
命令:输入$(ComSpec)
命令参数:输入/k $(TargetPath)。将任何参数附加到您自己的应用程序。
现在F5或Ctrl-F5在一个新窗口中执行Windows/System32/cmd.exe,并且/k确保在执行完成后命令提示符保持打开。
缺点是执行不会在断点处停止。
我的观点:
选择1:在main()的末尾添加断点
选择2:在返回0之前添加这段代码:
std::cout << "Press ENTER to continue..."; //So the User knows what to do
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
对于std::numeric_limits,您需要包含<iomanip>
对于makefile项目,被接受的解决方案失败了,原因是Visual Studio中的一个bug(这个bug至少在2012版之前都存在-我还没有测试2013版)。这里详细介绍了这个错误。
为了在makefile项目的程序终止后让控制台暂停,执行以下步骤(这可能与2010 - 2012以外的版本有所不同):
1)将/子系统:CONSOLE传递给链接器。-编辑:见下文。
2)在文本编辑器中打开项目文件(.vcxproj)。
3)在根<project>标签内,插入以下内容:
< ItemDefinitionGroup > <链接> < SubSystem >控制台< / SubSystem > < /链接> < / ItemDefinitionGroup >
4)重新加载解决方案中的项目。
5)不调试运行程序(CTRL + F5)。
编辑:
根据我下面的评论,设置链接器选项/子系统:CONSOLE实际上与makefile项目无关(如果你使用的是MSVC以外的编译器,甚至不一定可能)。重要的是将设置添加到.vcxproj文件中,就像上面的第3步一样。