读书人

编译时候遇到一个警告改了N久都没解

发布时间: 2012-02-04 15:43:09 作者: rapoo

编译时候遇到一个警告,改了N久都没解决,特请牛人赐教,此程序能运行
static inline char * getNameIndex (char **cp, char sentinel) {
char *c = *cp;
int k=0;
while (*c <= sentinel) ++c;
char *s = c;
while (*c > sentinel) {++c;k++;}
*cp = c;
return strndup (s,(size_t)k);
}
gcc编译这个函数时,老是弹出下面这个警告,请问这是咋回事?
warning: return makes pointer from integer without a cast
警告是针对最后一句
环境是
gcc version 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)




[解决办法]
要求返回char*,你return strndup (s,(size_t)k);,估计是个int吧
[解决办法]
单独编译做个个函数没有问题
没有其他信息不好推测
可以把inline去掉试试
[解决办法]
你的strndup的声明和实现在getNameIndex之后,所以编译器在这里会默认strndup的返回值是int
[解决办法]
会不会 strndup 的内部实现兼容了int* ,由于此例中没有具体的字符串,返回的时候就类似返回了一个NULL或者0,由于兼容性默认做int*了。
[解决办法]
strndup返回的是int类型,
而getNameIndex 声明返回一个指针
[解决办法]
你将strndup (s,(size_t)k);赋值给一个指针,再返回这个指针看看

读书人网 >C语言

热点推荐