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

有关gcc编译警告的小疑点

2012-02-14 
有关gcc编译警告的小问题C/C++ codechar *test_strstr(char *target, char *buf){return strstr(target, b

有关gcc编译警告的小问题

C/C++ code
char *test_strstr(char *target, char *buf){    return strstr(target, buf);}char *test_strchr(char cc, char *buf){    return strchr(buf,cc);}char * test_strcasestr(char *target, char *buf){    return strcasestr(target, buf);}


编译时有警告,最后一行改成return (char *)strcasestr(target, buf);就行了,有必要吗?为何第一个函数不需要改

ps 对于一个程序,警告是不是越少越好

[解决办法]
#define _GNU_SOURCE

#include <string.h>

char *strcasestr(const char *haystack, const char *needle);

用于在c串haystack中查找c串needle,忽略大小写。如果找到则返回needle串在haystack串中第一次出现的位置的char指针

在实际的应用中如果只加上头文件,当编译时会出现 warning: assignment makes pointer from integer without a cast

这是因为函数的声明在调用之后。未经声明的函数默认返回int型。
 
因此要在#include所有头文件之前加
#define _GNU_SOURCE ,以此解决此问题。

热点排行