gpt4 book ai didi

c - 传递 'strlen' 的参数 1 的符号不同

转载 作者:太空狗 更新时间:2023-10-29 15:29:00 25 4
gpt4 key购买 nike

我在整个项目中使用 strlen() 调用,直到现在我编译我的项目时没有使用 -Wall 编译器选项。但是当我开始使用 -Wall 时,我会遇到很多编译器警告。 80% 是 strlen char * vs const char * 警告。

我知道类型转换所有 strlen() 调用。有没有其他方法可以抑制以下警告?

./Proj.c:3126: warning: pointer targets in passing argument 1 of 
'strlen' differ in signedness`

C:/staging/usr/include/string.h:397: note: expected 'const char *' but
argument is of type 'unsigned char *'`

最佳答案

strlenconst char* 作为其输入。

不幸的是,C 标准声明 char 的符号性取决于编译器和平台。因此,许多程序员选择使用 signed charunsigned char 显式设置 char 的符号。

但是如果 char* 具有您期望的其他符号约定,那么这样做会导致发出警告。

幸运的是,在 strlen 的上下文中,采用 C 风格的转换是安全的:使用 strlen((const char*)...);

关于c - 传递 'strlen' 的参数 1 的符号不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27174198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com