C++未定义的标识符“_TCHAR*”

Posted 不溯流光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++未定义的标识符“_TCHAR*”相关的知识,希望对你有一定的参考价值。

解决办法:在头文件中添加#include <tchar.h>。

/*******相与枕藉乎舟中,不知东方之既白*******/

无法打开源文件“stdafx.h”控制台应用程序 |标识符“WCHAR”未定义

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

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

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

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




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

    标识符“_TCHAR”未定义。

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

【问题讨论】:

这能回答你的问题吗? What is the difference between _tmain() and main() in C++? 您需要#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; 【参考方案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++。

以上是关于C++未定义的标识符“_TCHAR*”的主要内容,如果未能解决你的问题,请参考以下文章

c++类继承,标识符未定义

C++ 错误:未定义标识符“CWnd”

VC++2010 Cout 未声明的标示符

vs中新建一个C++空项目导入.H和.CPP文件string报错未定义标识符?

未定义标识符/未声明

WinInet 未定义标识符