gpt4 book ai didi

c - "programming pearls": Strings of Pearls

转载 作者:太空宇宙 更新时间:2023-11-04 04:00:38 25 4
gpt4 key购买 nike

在15.3专栏中,作者介绍了如何从输入文档中随机生成文本。作者还给了source code .

qsort(word, nword, sizeof(word[0]), sortcmp);
int sortcmp(char **p, char **q)
{ return wordncmp(*p, *q);
}

我对源代码中的上述几行感到困惑。qsort 的最后一个参数是:

int comparator ( const void * elem1, const void * elem2 ).

但是sortcmp的定义不同。实际上,源代码无法在我的VS2010中编译。

最佳答案

似乎这段代码最初是用更宽容(或不太符合标准)的编译器编译的。这个想法似乎是比较器函数的规范 void * 参数被解释为 char ** 以便 wordncmp(),这是可以对它们应用最大长度 n 的字典序比较的实现。

按预期声明函数(即采用两个 const void * 参数)并显式进行类型转换似乎可以解决问题(使用 GCC 4.7.0 测试):

int sortcmp(const void *p, const void *q) {
return wordncmp(*(const char **)p, *(const char **)q);
}

我还必须修改 wordncmp() 函数的声明:

int wordncmp(const char *p, const char* q)
{
/*.. Definition unchanged.. */
}

关于c - "programming pearls": Strings of Pearls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12024325/

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