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