在编译时选择C++字符串文字的默认类型和编码

DrY*_*Yap 5 c++ unicode character-encoding string-literals c++11

C++ 11引入的新的字符串文字为UTF-8,16和32与u8,uU前缀但我必须我要使用哪一个硬代码.我正在寻找一种方法来选择我想在编译时使用哪种编码(类似于typedef的工作方式).

用户定义的字符串文字似乎没有帮助,因为它们处理指定编码的字符串.

我已经在前C++ 11代码中看到过使用一个短宏L("string")来选择"string",L"string"但我个人觉得很难看.

是否可以整齐地选择默认类型和编码,还是我必须使用宏选项?

DrY*_*Yap 0

不幸的是,解决这个问题的方法是使用宏。尽管@Nadim Farhat指出您可以使用 gcc 进行一定数量的选择,但它绝不是一个可移植的解决方案。