我正在做一些编译器研究工作。对于此代码:
static const unsigned char *dir= U"pragma dependency";
Ubuntu 14上的 cpp4.2
有效,而Ubuntu 16上的cpp6
会出错。如果删除U
,则表示没问题。
那么cpp6
出了什么问题?
更新:
我在C
项目中测试了这段代码,没有错误。如果它在C++
项目中,那么就像下面提到的那样。
答案 0 :(得分:2)
您的编译器没有任何问题。当您使用U
为字符串文字添加前缀时,表示它将是const char32_t
的数组,而不是const unsigned char
的数组
您必须将代码更改为
static const char32_t *dir= U"pragma dependency";