Win32 api中使用了TCHAR但是在那里使用char或string就足够了但是为什么TCHAR?

问题描述

我正在学习 win32 api。其中使用 TCHAR 数据类型来定义用于注册类的字符串。为什么在那里使用 TCHAR?

解决方法

TCHAR 是 Microsoft 在从基于代码页的字符过渡到 Unicode 时创建的拐杖。他们想要一种让人们轻松转换代码的方法,因此他们创建了一个编译器标志,用于确定您是要以旧方式还是以新方式做事。 TCHAR 是一个宏,对于旧方式扩展为 char,对于新方式扩展为 wchar_t。每个 Windows API 函数还获得一个宏,该宏为旧式函数附加 A,或为新函数附加 W

如果您要开始一个新程序,您绝对应该使用 Unicode,而忘掉所有旧包袱。微软被迫继续使用它,因为它们是向后兼容性的王者,而且有 20 年的老程序永远不会更新为 Unicode。这并不意味着您需要关心。