18_答疑(头文件的重定义)

1.重定义导致的问题

在dog.h中定义dog结构体类型:
在这里插入图片描述

在main.c中包含dog.h:
在这里插入图片描述
在main.h中也包含dog.h:
在这里插入图片描述
导致的问题:
将头文件展开,会出现dog重复定义的问题

在这里插入图片描述

2.重定义,解决办法:

在这里插入图片描述

3.今天看C语言书上说函数只能定义一次,而声明可以有好多个,请高手给我再详细解释一下,最好能给个例子

首先要知道什么是函数申明什么是函数定义。。。函数申明就是只有返回类型+函数名(形参…);
就比如说 申明函数 void fun() ; 而函数的定义是函数的实现部分。比如:void fun() { … //具体实现语句 }

因为在C语言中不允许函数的重写,所以一个函数只能定义一次。。而函数申明是为了让调用它的其他函数能知道它的存在,就比如说:当你的main函数想调用 fun 函数时,如果fun函数在main函数的下面,具体如下:
void main() {
fun() ; // 调用fun函数

}
void fun() {
… // 实现部分

}
这样的话系统就会报错。。因为main函数在调用fun函数时,没有发现到它。这是解决的办法有两个:1.把fun函数写到main函数的上面。2.在main函数里面或上面写上fun函数的申明 :void fun() ;

什么时候要多次用到函数申明呢? 其实答案很简单:当你的其他函数调用一个函数时如果被调用的函数没有在调用函数的前面都必须要用到函数申明,所以。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值