首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

编译时候遇到一个警告,改了N久都没解决,特请牛人赐教,此程序能运行,该怎么处理

2012-02-04 
编译时候遇到一个警告,改了N久都没解决,特请牛人赐教,此程序能运行staticinlinechar*getNameIndex(char**c

编译时候遇到一个警告,改了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);赋值给一个指针,再返回这个指针看看

热点排行