由于错误的strcmp参数处理而生成警告
所以我有一个
unsigned char * pMyPtr
分配给某事。
然后我想将它与任意字符串进行比较
strcmp(const char* , const char* )
但是当我这样做时,clang编译告诉我
warning: passing (aka 'unsigned char *') to parameter of type 'const char *' converts between pointers to integer types with different sign
如何删除此警告?
对于这个问题的所有评论,我觉得我错过了一些东西。
我知道演员阵容不合时宜,但不是以下简单的解决方法吗?
strcmp((const char*) pMyPtr , whatever_is_being_compared)
它甚至没有签名。 在它背后,是一个结构。
这意味着你不能在这里使用strcmp
。 当输入数据是以null结尾的字符串时,您可以使用strcmp
。 当输入数据是结构时,情况并非如此。 也许您应该考虑使用memcmp
,或者您可能需要将结构作为结构进行比较。
Clang无法从unsigned char*
转换为const char*
。 因为unsigned char*
与char*
不同。 通过添加unsiged
您可以使用char
0to255而不是-127to127的范围。
在strcmp所在的行上,您可以使用(const char*)
对unsigned char值进行类型转换,这将有效,因为它将作为const char*
进行威胁。 而不是unsigned char
如果您觉得警告没有任何副作用。 你可以忽略这样的警告:
#pragma warning( disable : 4507 34 )