Code Bye

c++11类型收窄错误

想在项目里使用c++11特性,
于是升级gcc到5.1,开启std=c++11
以前的老代码有大量的,相似这种代码,现在碰到c++11的规范,不允许类型收窄赋值。
char kEncryptionKey[] = { 0xC1,0xEC,0x48};

现在报错

问一下这个该怎么破。
莫非要老代码挨个改成

unsigned char kEncryptionKey[] = { 0xC1,0xEC,0x48};

吗?
那万一kEncryptionKey里同时有正负数怎么办?

解决方案

90

引用:
Quote: 引用:
Quote: 引用:

唉~~改了一些地方,碰到个麻烦事了。
以前的代码用string装数据,但string是这样声明的

typedef basic_string<char, char_traits<char>, allocator<char> > string;

然后现在数据都改成unsigned char,又是个问题。
改这个又是个麻烦事。
真是恶心。
这11这个规定一下来,太多数据不兼容啊。

刚发现有这个 -Wno-narrowing

貌似没什么方法改正呢,只能改老代码,好多地方。
然后发现改完的老代码,用老版本编译器,同样不兼容。
c++11用来编译老代码真是惆怅啊。

那个版本的编译器?
本人这边用g++5.3 6.1 加上  -Wno-narrowing 都可以编译通过的

10

你这个只是没有连接 stdc++,  编译已经成功了啊…  你应该 g++ -W…..   main.cpp   或 gcc -W ….. main.cpp -lstdc++

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c++11类型收窄错误