微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

常量表达式的计算结果为 -1,无法缩小为类型“char”[-Wc++11-narrowing] 错误

如何解决常量表达式的计算结果为 -1,无法缩小为类型“char”[-Wc++11-narrowing] 错误

我正在使用旧代码,在使用较新的 C++ 标准进行编译时,我在每个 -1 处都会出错。

constant expression evaluates to -1 which cannot be narrowed to type 'char' [-Wc++11-narrowing]

这是代码片段

typedef struct {
    //short     len;
    //unsigned short cw;
    char        x,y,v,w;
} testStruct;

const testStruct testArr[] = {
    {   1,-1,0},{  -1,1,{   0,1},-1},{   1,-1}
};

我尝试将代码和括号更改为 warning: narrowing conversion C++11 后面的括号,但我仍然遇到相同的错误。有没有不恢复到旧 C++ 标准的解决方案?

解决方法

要覆盖编译器,您必须编写 static_cast<char>(-1)

有些事情在较新的 C++ 标准中不再被接受,因此您必须找到一种更现代的方式来做事...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。