gpt4 book ai didi

cast 丢弃指针目标类型的限定符?

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

-Wcast-qual 在 stristr() 的 return 行上输出此警告。有什么问题?

warning: cast discards qualifiers from pointer target type

char *stristr(const char *string, const char *substring)
{
size_t stringlength = strlen(string);
char *stringlowered = malloc(stringlength + 1);
strcpy(stringlowered, string);
tolower2(stringlowered); // in my source it has a different name, sorry.

char *substringlowered = malloc(strlen(substring) + 1);
strcpy(substringlowered, substring);
tolower2(substringlowered); // in my source it has a different name, sorry.

const char *returnvalue = strstr(stringlowered, substringlowered);
if(returnvalue != NULL)
{
size_t returnvaluelength = strlen(returnvalue);
returnvalue = string;
returnvalue += stringlength - returnvaluelength;
}

free(stringlowered);
free(substringlowered);

return (char *)returnvalue;
}

编辑:
在 glibc 2.15 的 strstr() 源代码中:

return (char *) haystack_start; // cast to (char *) from const char *

最佳答案

您已将 returnvalue 声明为指向 const char 的指针,但随后您将其转换为指向非 const char 的指针>。您丢弃了 const 限定符,因此编译器会提示您已丢弃它!

解决方案要么改变函数的返回类型,要么找到一个非const char 指向。您的函数中没有,因此如果您确实需要非const 返回类型,您可以考虑更改参数类型。

关于cast 丢弃指针目标类型的限定符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10181121/

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