在下面的示例中,我想删除 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/