<分区>
我开始着手一个用 C++ 编写的 Windows 桌面的全新项目。当我学习 Windows 编程时,我读到使用 TCHAR 是一个很大的改进,因为我可以在不更改代码的情况下构建程序的 ANSI 或 Unicode 版本。但是,我从未真正使用过该选项来构建 ANSI 版本。此外,在 C++ 的标准库中,没有 TCHAR,我必须为 std::string、std::stringstream 等及其对应的宽字符串创建 typedef。所以目前我正在考虑放弃 TCHAR 转而使用 wchar_t,我收集了以下优点和缺点。
优点:
- TCHAR 是一个宏,所以如果我不使用它,前端编译器和 Intellisense 会给出更好的结果。
- 变量的类型更明确。
- L""比 _T("") 更容易输入。
缺点:
- 关于字符类型的模块化丢失(尽管我并不真正需要 ANSI 版本,但我发现使用抽象字符类型是一个很好的功能,如果将来我需要 UTF-8 或UTF-32 版本?)。
- 我必须用 W 后缀一些 API 函数,例如 GetWindowTextW。
还有我的问题:
- 在 C++ 标准库中是否有比我上面描述的更简单的方法来使用 TCHAR?就像具有这些 typedef 的标准头文件一样?
- 你认为我的推理正确吗?
- 我是否遗漏了任何重要的观点?
- 当今最先进的解决方案是什么?专业的 Windows 程序员是否仍然使用 TCHAR(在新代码中)?
- 如果我删除 TCHAR,我应该写 L""还是 u""而不是 _T("")?