visual-c++ - 在 VC++ 中将字符串文字提升为 wchar_t 的标准宏

标签 visual-c++ visual-studio-2005

是否有一个标准宏可以使用 Visual Studio 2005 将用预处理器宏替换的 char 字符串文字转换为 wchar_t 字符串?

例如这有效:

wchar_t* test = L"Hello World";

但这不是:
#define HELLOWORLD "Hello World"
wchar_t* test = L(HELLOWORLD);

我正在与不同平台上的几个不同项目共享一个包含许多国际化字符串的头文件,因此我不想更改 header 本身,也不想添加 _T() 因为这取决于平台。所以我希望 unicode 转换在我的源代码中,而不是在标题中。我知道我可以编写自己的替换宏,如图所示 here ,但想知道VS中是否有标准方法?

对于任何编写国际化代码的人来说,这似乎是一个非常常见的场景,但我似乎找不到随 VS2005 提供的预定义宏。

最佳答案

我有一个类似的问题,我想出了这个解决方案:

#define HELLOWORLD "Hello World"
const wchar_t* test = L"" HELLOWORLD;

我用 GCC 7 对此进行了测试,我必须确保转换(宽到字符)功能正常工作。

我很确定这也适用于其他编译器。即使是较旧的,也需要编写多行注释的功能。但也许它会提示使用空字符串文字。

关于visual-c++ - 在 VC++ 中将字符串文字提升为 wchar_t 的标准宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11875774/

相关文章:

c++ - typeid 运算符返回的对象的生命周期是多少?

visual-c++ - 对每个使用 'auto' 会导致 C3539 - 为什么?

c++ - 消息处理函数中的 afx_msg 术语

c# - 在单线程应用程序中调用 WMI 函数时的 DisconnectedContext MDA

visual-studio - 用户从安装中删除文件并触发 .net 应用程序的自动重新安装

c++ - 在 cantata++ 测试项目中引用 yvals.h 的构建错误

c++ - 无效或损坏的 lib 文件 opencv_core220d.lib

c - MSVC 等同于 gcc/clang 的 -Wall?

c++ - Qt、Windows 和 _POSIX_

c++ - 如何在不修改源文件的情况下修改 Pre-Build 中的源文件?