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