如何解决strlen() 关于指针间转换的警告 | C99 |克莱恩
C99 | CLion 2020.3.1
在使用 strlen() 函数时,CLion 显示警告
"Passing 'unsigned char [20]' to parameter of type 'const char *' converts between pointers to
integer types with different sign"
不过,程序会根据需要编译和执行。
相关代码:
unsigned char arr[20] = "foo";
unsigned int len = strlen(arr);
如果有人能帮助我理解警告并有好的方法来修复它,那将不胜感激。
解决方法
字符串不应该是 unsigned
。将类型更改为 char arr[20]
。
警告的原因是当您使用类型为 strlen
的参数表达式时,函数 char *
需要类型为 unsigned char *
的指针,并且没有从一种类型到另一种。
只需对 char *
类型使用显式转换
size_t len = strlen( ( char * )arr);
否则将数组的元素类型从 unsigned char
类型更改为 char
类型。
最好将变量 len
声明为具有类型 size_t
,因为它是函数 strlen
的返回值的类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。