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

时间:2017-11-13 15:07:12

标签: c++ c-preprocessor

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

static const unsigned char *dir= U"pragma dependency";
Ubuntu 14上的

cpp4.2有效,而Ubuntu 16上的cpp6会出错。如果删除U,则表示没问题。

那么cpp6出了什么问题?

更新: 我在C项目中测试了这段代码,没有错误。如果它在C++项目中,那么就像下面提到的那样。

1 个答案:

答案 0 :(得分:2)

您的编译器没有任何问题。当您使用U为字符串文字添加前缀时,表示它将是const char32_t的数组,而不是const unsigned char的数组

您必须将代码更改为

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