Visual Studio 2017 导致问题
Posted
技术标签:
【中文标题】Visual Studio 2017 导致问题【英文标题】:Visual Studio 2017 causing problems 【发布时间】:2017-12-13 19:24:53 【问题描述】:在编程方面,我完全是个初学者。我正在尝试使用“编程:使用 C++ 的原理和实践”一书来学习,它建议将 Visual Studio 下载到代码中(我之前使用的是 Codeblocks)。 我下载了最新版本(2017),得到了 C++ 的经典应用程序包并创建了一个项目。
但是当我写我的第一个代码时
#include "stdafx.h"
#include "../../std_lib_facilities.h"
int main()
cout << "Hello world!";
keep_window_open();
return 0;
Visual Studio 开始吓坏了。当我单击本地调试器按钮时,控制台应用程序会转到任务栏,当我单击它时,我无法对其进行任何操作。它只是显示“Hello World!”但没有“请输入字符退出”,因为它应该。它对键盘输入没有反应。我无法关闭它(即使我使用任务管理器并尝试手动关闭进程)。我找到的唯一解决方案是单击 Visual Studio 中的“继续”按钮,但使用起来不是很方便,因为该应用程序仍然不能按照我想要的方式工作。有没有办法让它像在代码块中一样工作 - 我只需输入代码,单击一个按钮,我就有了一个功能齐全的控制台应用程序?
可能导致它的一件事 - 我在使用时遇到错误,所以我根据互联网的建议添加了
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
在头文件 std_lib_facilities.h 的开头
有人可以帮助我吗? (也许我应该回到 Codeblocks 并忽略 Visual Studio?但这似乎不是一个好方法)
【问题讨论】:
听起来“本地调试器”环境不是您所期望的,您可能想要“不调试就启动”(或 Ctrl` + F5)?基本上是“运行程序”而不是“调试程序” This Question 现在可能无济于事,但似乎存在一些问题。 可能是您的防病毒软件导致了这种行为。众所周知,aVast 会导致此类问题。其他一些防病毒软件也可以做到这一点。尝试在任何一种情况下禁用您的 AV。 你的 keep_window_open() 的定义(正文)是什么;功能? 您不应该需要(或不想)以管理员身份运行 VS。只需关闭 aVast 中的沙盒功能即可。或者为您的项目所在的文件夹添加一个例外。 【参考方案1】:如果您只想拥有“请输入字符退出”的行为,您可以只包含 cstdio 标头并在最后使用std::getchar()
。这将确保在您按下键盘上的任意键之前程序不会退出。
但是,此方法不会打印出消息“请输入字符以退出”,因此您需要使用 cout 自己打印。
main.cpp 最终会看起来像这样:
#include "stdafx.h"
#include <cstdio>
#include <iostream>
int main()
std::cout << "Hello World" << std::endl;
std::cout << "Please enter character to exit" << std::endl;
std::getchar();
return 0;
【讨论】:
这不是我所说的,因为函数“keep_window_open”完全按照你写的那样做。不过问题已经在 cmets 中解决了。以上是关于Visual Studio 2017 导致问题的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2017 中的 TypeScript:自动定义包含导致重复标识符错误
由于 Visual Studio 次要升级而导致的运行时依赖性
如何在 Visual Studio 2017 中获取堆栈跟踪