一编译
说明函数fun 重定义了。
我们说函数的定义一定要写在源文件中,为什么不能写在头文件中?因为头文件要在我们的项目中在多个位置被包含,头文件的本质就复制替换。如果函数定义写在了头文件中,那么就相当于在程序的多个位置,出现了和 fun 同名的函数。所以函数的定义要写在源文件中,而源文件不会被包含,所以源文件中的内容一定是独一份的。
这里为什么fun会 重定义呢?
之前说过,像结构体只是在所在的文件中可见,在一个文件中定义了 struct cc 这个结构体,在另一个文件中再定义 struct cc 这个结构体,他俩之间没有任何的关系。只在自己所在的文件中可见。
而函数的定义是只能存在一份,相当于是全局的!也就是整个工程都只能存在一个fun。fun在任何位置都好使。
所以,定义放在源文件中,声明(宏,typedef,结构体的声明,函数声明)放在头文件中。
另外 一个问题
如果想要结构体互相嵌套的时候,要使用指针。为什么?
因为指针不管是什么类型的,在32位编译器环境下就是4字节。
所以
结构体中出现未定义 这个问题就是未知大小!