LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3154|回复: 7

incompatible implicit declaration of built-in function

[复制链接]
发表于 2006-1-19 22:45:14 | 显示全部楼层 |阅读模式
发现gcc高版本编译是会出现warning,是一些很常用函数出现的问题:

marvel@ibmtc:~/test$ make
gcc -g test.c
test.c: In function 'main':
test.c:7: warning: incompatible implicit declaration of built-in function 'malloc'

源代码中是

      1 #include <stdio.h>
      2
      3 int main(void)
      4 {
      5     int n,i,j;
      6     scanf("%d",&n);
      7     char** array=(char**)malloc(sizeof(char*)*(n+1));
      8     for(i=1;i<=n;i++)
      9     {
     10         array=(char*)malloc(sizeof(char)*(i+1));
     11         for(j=0;j<i;j++)
     12             array[j]='a';
     13         array='\0';
     14     }
     15     for(i=1;i<=n;i++)
     16         printf("%d %x %s\n",i,array,array);
     17     for(i=n;i>0;i--)
     18         free(array);
     19     free(array);
     20 }

此外还有string函数也许出现这种情况,是不是size_t和int的关系呢?
应该如何避免这种warning呢?
发表于 2006-1-20 09:11:55 | 显示全部楼层
使用malloc要包含必要的头文件stdlib.h
btw:你的程序写得有不少问题,自己再好好修改一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-20 15:52:39 | 显示全部楼层
哦,果然是这样的,谢谢。
程序是测试用的,有什么地方不规范吗?请教一下
BTW 缩进是因为复制代码的关系
回复 支持 反对

使用道具 举报

发表于 2006-1-20 23:02:54 | 显示全部楼层
滥用指针,一塌糊涂,晕倒啦,看不下去啦,指针要用的有艺术一点。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-21 16:23:45 | 显示全部楼层
Post by xiaoshao_0_0
滥用指针,一塌糊涂,晕倒啦,看不下去啦,指针要用的有艺术一点。

我用的是一个二维数组char[][],这个数组的空间是动态分配的,使用a填充。
C不支持变长数组吧,所以只能使用char**了,两者不是都是等效的吗?
依你说,这种情况应该是怎么做呢?
回复 支持 反对

使用道具 举报

发表于 2006-1-21 19:59:37 | 显示全部楼层
记得java的数组是从1开始的,这位老兄大概刚才java过来,两种用法混在一起了。除了浪费了一个指针变量的空间外,好像没什么问题!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-21 20:11:26 | 显示全部楼层
Post by haohao_h
记得java的数组是从1开始的,这位老兄大概刚才java过来,两种用法混在一起了。除了浪费了一个指针变量的空间外,好像没什么问题!

这倒不是,呵呵.因为是防止意外的bug的关系,所以0这个位置特意空出来的.
如果第5个,那么array[5]的长度就是6:5个a和一个'\0',这样看起来比较清楚,有不少人也是这么做的.
回复 支持 反对

使用道具 举报

发表于 2006-1-22 09:44:31 | 显示全部楼层
Post by marvel
这倒不是,呵呵.因为是防止意外的bug的关系,所以0这个位置特意空出来的.
如果第5个,那么array[5]的长度就是6:5个a和一个'\0',这样看起来比较清楚,有不少人也是这么做的.

用这样的方式来防止“意外的bug”,看来人的想象力还真是丰富。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表