是否有一个标准宏可以使用 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/