c++将宏变量转换为wchar字符串文字的简单方法

标签 c++ macros

在下面的示例中,我想删除 std::wstring(std::widen(...)) 部分,但是 '#' 宏只返回一个 char 字符串文字-- 有什么方法可以容纳 wchar 吗?

#define FOO_MACRO(className)\
struct className##Factory : public OtherClass {\
// does some stuff here\
} className##Factory;\
someMap->add(std::wstring(std::widen(#className), className##Factory)))

我如何使用 wchar 做同样的事情?

最佳答案

在字符串文字上使用 L 前缀来生成 wchar 字符串文字:

#define CAT(A, B)   A##B
#define WSTRING(A)  CAT(L, #A)

关于c++将宏变量转换为wchar字符串文字的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14967086/

相关文章:

c++ - scoped_ptr和shared_ptr可以混合使用吗?

scala - 如何理解和使用scala宏,编写更复杂的函数

vim - 将命令行的输出写入vim中的文件

c++ - 在 C++ 中拥有字符串资源有什么意义?

c++ - 我只是幸运 malloc 返回了一个零填充的缓冲区吗?

c++ - 如何在 Linux 和 Windows 上获取时间戳字符串

c++ - UnspecifiedBoolType 的类型?关于typedef、成员函数指针和转换运算符

用 case 语句组成函数名的 C 宏

c - 根据用户输入声明数组

windows - winbase.h(第 97 行)中的类似函数的宏 Yield() 是什么?