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

ash*_*ash 4 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)))
Run Code Online (Sandbox Code Playgroud)

我怎么用wchar做同样的事情?

Chr*_*odd 7

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

#define CAT(A, B)   A##B
#define WSTRING(A)  CAT(L, #A)
Run Code Online (Sandbox Code Playgroud)