解决 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"
我想使用新的 C++ u8 字符串文字前缀 (reference)。
然而,我使用的代码库已经将 typedefs u8 设为 unsigned char。 我实际上无法在它们周围移动 headers 或#undef。
我该如何解决这个问题?
没关系,u8
已经定义为宏了。字符串文字,无论它是否具有编码前缀,都是单个预处理器标记。 u8
前缀不会进行宏替换。实际上在附录 C 中有一个例子可以证明这一点:
#define u8 "abc"
const char *s = u8"def"; // Previously "abcdef", now "def"