解决 typedef u8 以使用 C++11 u8 字符串文字

Work around typedef u8 to use C++11 u8 string literal

我想使用新的 C++ u8 字符串文字前缀 (reference)。

然而,我使用的代码库已经将 typedefs u8 设为 unsigned char。 我实际上无法在它们周围移动 headers 或#undef。

我该如何解决这个问题?

没关系,u8已经定义为宏了。字符串文字,无论它是否具有编码前缀,都是单个预处理器标记。 u8 前缀不会进行宏替换。实际上在附录 C 中有一个例子可以证明这一点:

#define u8 "abc"
const char *s = u8"def";  // Previously "abcdef", now "def"