c – 是否允许将char []强制转换为unsigned char *?
发布时间:2020-12-16 09:49:35 所属栏目:百科 来源:网络整理
导读:我正在使用一些具有以下方法的类: const unsigned char *sData 作为参数. 当我打电话给以下时: char dataIn[]="The quick brown fox jumps over the lazy dog"; obj.CRC(dataIn,strlen(dataIn),checksum); // compute checksum 我收到了错误: Error 1 err
我正在使用一些具有以下方法的类:
const unsigned char *sData 作为参数. 当我打电话给以下时: char dataIn[]="The quick brown fox jumps over the lazy dog"; obj.CRC(dataIn,strlen(dataIn),&checksum); // compute checksum 我收到了错误: Error 1 error C2664: 'void crcClass::CRC(const unsigned char *,size_t,unsigned int *)' : cannot convert parameter 1 from 'char [44]' to 'const unsigned char *' 所以我修改了上面这样的代码并且它有效: obj.CRC((const unsigned char*)dataIn,&checksum); // compute checksum 修改我做得好吗? 解决方法
没关系,但是对于“安全”,请考虑使用reinterpret_cast< const unsigned char *>(dataIn).
从reinterpret_cast不能删除const或volatile的意义上讲,这是更安全的,而C风格的强制转换可以.如果你不想删除限定符,那么当你弄错它时代码就很难编译. 当然,在这种情况下,错误的可能性很小 – 目的地是const限定的,你可能会注意到源是否是挥发性合格的.但是养成让编译器帮助你的习惯仍然很有用,而且有些人会认为代码更容易阅读. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |