179一个错误的认识

一编译

 说明函数fun 重定义了。

 我们说函数的定义一定要写在源文件中,为什么不能写在头文件中?因为头文件要在我们的项目中在多个位置被包含,头文件的本质就复制替换。如果函数定义写在了头文件中,那么就相当于在程序的多个位置,出现了和 fun 同名的函数。所以函数的定义要写在源文件中,而源文件不会被包含,所以源文件中的内容一定是独一份的。

这里为什么fun会 重定义呢?

之前说过,像结构体只是在所在的文件中可见,在一个文件中定义了 struct cc 这个结构体,在另一个文件中再定义 struct cc 这个结构体,他俩之间没有任何的关系。只在自己所在的文件中可见。

而函数的定义是只能存在一份,相当于是全局的!也就是整个工程都只能存在一个fun。fun在任何位置都好使。

所以,定义放在源文件中,声明(宏,typedef,结构体的声明,函数声明)放在头文件中。  

 另外  一个问题

如果想要结构体互相嵌套的时候,要使用指针。为什么?

因为指针不管是什么类型的,在32位编译器环境下就是4字节。

所以

结构体中出现未定义 这个问题就是未知大小

原文地址:https://www.cnblogs.com/dabing0983/p/10559556.html