Xcode12 报错 Implicit declaration of function ‘xxx‘ is invalid in C99

一、报错信息

Implicit declaration of function 'eg68' is invalid in C99

在这里插入图片描述

二、报错原因

该警告明确告诉我们在C99的规范中,不允许出现隐含声明的用法。这是C99规范中增加的规则,不过即便不遵守此规则,也仅仅是一个警告而已。

什么是隐含声明呢,也很简单,就是你调用函数的c文件中,没有正确包含对应的头文件。一般来说,c,c++都会将类,函数,的声明放在头文件中,这样在需要的时候包含对应头文件就可以了,在编译器的前期处理中,需要通过头文件来建立一些函数,变量,类的表,如果调用到了声明中没有的函数,编译器会认为是有危险的,显而易见,如果直接调用函数,在运行期间会出现程序异常。

因此强烈建议大家不要忽略这个警告,更不要象个别文章建议的那样把编译环境配置成C89,这样隐患依然存在。

一开始我一直忽略这个警告,但是当我更新XCode之后,原来可以运行的代码 直接就报错了!!!

三、解决方案

由于我是调用的另一个源文件中的函数,所以这里我直接用 extern 就解决了问题。

1、method.c
int eg68(){
	printf("调用eg68()方法");
	return 0;
}
1、main.c
#include <stdio.h>

int main(){
	extern int eg68();  // 用extern 来导入其他源文件的函数   extern + 函数类型 + 函数名();
	eg68();
}


【注】:一个源文件想要调用其他源文件,如果用 #include“ ” 的方法会发生错误,错误的原因在于 重定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Siona_xin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值