【问题标题】:cannot open source file "stdafx.h" ConsoleApplication | identifier "_TCHAR" is undefine无法打开源文件“stdafx.h”控制台应用程序 |标识符“WCHAR”未定义
【发布时间】:2020-12-22 14:24:07
【问题描述】:

我无法使用以下格式运行我的控制台应用程序。我查看了数十个网站和堆栈溢出问题,但没有一个有用。请帮我解决这个问题:

#include "stdafx.h"
#include <iostream
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{


}
  1. 无法打开源文件“stdafx.h”

  2. 标识符“_TCHAR”未定义。

  3. 这是一个控制台项目,它不会创建那些 stdafx.h 和 stdafx.cpp 文件。

【问题讨论】:

  • 您需要#include &lt;tchar.h&gt;。如果您使用标准 Visual Studio 模板创建控制台项目,它会编译得很好。
  • @CodyGray 我无法相信这个建议有多糟糕。你有没有看过这个网站上的数百篇新手帖子,他们遇到了 char、WCHAR、TCHAR 等奇怪的混合问题。如果你有什么建议使用非标准 C++,那么至少建议使用 WCHAR。
  • 数百名新手在编写 C++ 代码时也会出错。我们是否应该开始建议他们都用 BASIC 编写?这是一个奇怪的论点。他们有一个代码 sn-p,他们想要编译它,但遇到了错误。修复该错误的方法是包含适当的头文件。告诉他们做一些完全不同的事情也是可行的,但根据我的估计,这有点超出了范围。
  • 我感觉#include &lt;Windows.h&gt; 不见了。此外,#include &lt;iostream 缺少 &gt;

标签: c++ visual-studio stdafx.h


【解决方案1】:

我自己找到了这个问题的答案。 从一开始,问题就出在 Visual Studio 的版本上。 所以除了vs2012调试的不可读和不清楚的形式之外,事情是在vs2012中这种形式的“int _tmain(int argc,_TCHAR * argv [])”被接受但在vs2019中这是完全禁止的,例如“#include “stdafx.h”。 所以关键是要知道在不同的Visual Studio版本中你应该用什么形式来进行c++编程。

【讨论】:

    【解决方案2】:

    _TCHAR 替换为char,将_tmain 替换为main

    _TCHAR 不是 C++ 语言的一部分,它是 Windows API 的一个过时功能,现在不应该使用。

    您也可以删除#include "stdafx.h",这是使用 Microsoft Visual Studio 编译器时的常见约定,但不是必需的。您可能还需要在您的项目中关闭 precompiled headers 选项。

    【讨论】:

    • 在 Windows 上,您应该使用 wchar_t,而不是 char
    • @CodyGray 或者,如果您使用的是 Windows SDK,平台类型 WCHAR
    • TCHAR 没有过时。在 Windows 中,您应该始终使用 wchar_t,而不是 char。关闭预编译头文件是一个非常糟糕的主意,现在任何比 hello world 更大的东西都会受益。
    • 您为什么要在提问者打算编写“标准”C++ 的假设下进行操作?问题很明显,他们正在尝试开发 Windows 控制台应用程序。
    • 帖子中没有出现短语“Windows 控制台应用程序”(仅“控制台应用程序”)。这是一个合理的工作假设,除非您对特定于 Windows 的代码有特殊需求(这对初学者来说不太可能),否则最好坚持使用标准 C++。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2014-12-07
    相关资源
    最近更新 更多