【发布时间】:2018-07-06 12:31:33
【问题描述】:
我想知道如何摆脱以下警告:
kwic1.c:118:48: warning: incompatible pointer types passing 'int (const char *,
const char *)' to parameter of type 'int (* _Nonnull)(const void *, const
void *)' [-Wincompatible-pointer-types]
我正在为 qsort 实现一个比较器。这是我的功能
int comparator(const char *p, const char *q)
{
int index_p = 0;
int index_q = 0;
while(p[index_p] != '\0')
{
if(isupper(p[index_p]))
break;
index_p++;
}
...
我尝试过投射p 和q,但没有成功。
【问题讨论】:
-
这行得通吗?要么您正在对字符数组而不是指向数组的指针进行排序 - 这非常低效 - 或者您的
p和q应该是const char **。 -
如果您正在对字符串中的字符进行排序(所以
"abracadabra"将变为"aaaaabbcdrr"),您将不会单步执行字符串(您只需比较参数点的两个字符在)。如果要对字符串进行排序,则会传递两个const char **值,而不是const char *值。无论哪种方式,都存在比函数参数类型更多的问题。
标签: c function-pointers qsort