C语言问题记录之Conflicting types for ‘free

您所在的位置:网站首页 c语言typesh C语言问题记录之Conflicting types for ‘free

C语言问题记录之Conflicting types for ‘free

#C语言问题记录之Conflicting types for ‘free| 来源: 网络整理| 查看: 265

问题描述:

今天在XCode中尝试练习C语言,使用malloc分配堆内存空间。但是想调用free释放堆内存空间时,Xcode编译失败,并且提示:Conflicting types for ‘free’

int main(int argc, const char * argv[]) { int a = 10; int b = 20; int * r = IntOperate(&b,&a, MULT); printf("MULT : %d \n",*r); r = IntOperate(&b,&a, MINS); printf("MINS : %d \n",*r); r = IntOperate(&b,&a, DIV); printf("DIV : %d \n",*r); r = IntOperate(&b,&a, ADD); printf("ADD : %d \n",*r); free((void*)r); //XCODE 提示:Conflicting types for 'free return 0; } 原因分析:

由于Xcode环境中 free方法的声明有多个,无法隐士导入正确的free方法实现。造成了报错

解决方案:

在使用之前,没有main方法之前,显示声明一下free方法的签名信息,便于编译器链接正确的free的实现。

//新增该方法声明 extern void free(void*); int main(int argc, const char * argv[]) { int a = 10; int b = 20; int * r = IntOperate(&b,&a, MULT); printf("MULT : %d \n",*r); r = IntOperate(&b,&a, MINS); printf("MINS : %d \n",*r); r = IntOperate(&b,&a, DIV); printf("DIV : %d \n",*r); r = IntOperate(&b,&a, ADD); printf("ADD : %d \n",*r); free((void*)r); //此时Xcode编译成功 return 0; }

本人C语言小白一名,请勿见笑 ~ ~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3