【发布时间】:2009-03-20 04:45:28
【问题描述】:
最近我一直在学习 K&R 的 C 编程语言。
在第 5.11 节中,他们介绍了指向函数的指针,并且在输入示例之后——快速排序实现,我们提供了指向我们想要使用的比较函数的指针——我收到了来自编译器的警告:指针类型不匹配在条件表达式中。 (我的编译器是 OS X 10.5.6 上的 gcc 4.0.1)
示例中触发警告的行是:
qsort((void **) lineptr, 0, nlines-1,
(int (*)(void*, void*))(numeric ? numcmp : strcmp));
程序执行时没有段错误,但我喜欢尽可能消除所有警告,或者至少了解它们的原因。
numcmp 的函数声明如下:
int numcmp(char *, char *);
但是根据手册页,stcmp 有这个签名:
int strcmp(const char *s1, const char *s2);
由于方法签名略有不同,警告是否简单?忽视警告会有什么后果?
【问题讨论】:
-
Dana,查看Problem compiling K&R example,您可能会在那里找到问题的答案。如果您不知道,请告诉我们。
-
埃迪指着一个骗子。我投票结束我自己的问题,但我认为所有者可以通过一种方式立即关闭它。