cpp 预处理器无法识别 UTF-32 字符串

cpp preprocessor doesn’t recognise UTF-32 string

本文关键字:识别 UTF-32 字符串 预处理 处理器 cpp      更新时间:2023-10-16

我正在做一些编译器研究工作。对于此代码:

static const unsigned char *dir= U"pragma dependency";

cpp4.2 在 Ubuntu 14 上工作,而 cpp6 在 Ubuntu 16 上会抛出错误。如果删除U,则没关系。

那么cpp6有什么问题呢?

更新:我在C项目中测试了此代码,没有错误。如果它在一个C++项目中,那么下面提到的人就是这种情况。

你的编译器没有任何问题。当你在字符串文字前面加上U时,这意味着它将是一个const char32_t数组,而不是一个const unsigned char数组

您必须将代码更改为

 static const char32_t *dir= U"pragma dependency";