1、变量和函数的声明应该放在.h文件中,头文件不应包含函数定义,否则即使是用了#ifndef #endif条件编译也会报函数重复定义的错误。
2、使用#ifndef只是防止了头文件被重复包含,但是无法防止变量被重复定义
3、在头文件中尽量只声明变量和函数,不要有定义。这么做不仅仅可以减弱文件间的编译依存关系,减少编译带来的时间性能消耗,更重要的是可以防止重复定义现象的发生,防止程序崩溃。
4、在.c文件中声明变量,然后建一个头文件(.h文件)在所有的变量声明前加上extern,注意这里不要对变量进行的初始化。然后在其他需要使用全局变量的.c文件中包含.h文件。
5、通过声明 const/ static 变量来隔离变量在源文件的可见性,来解决变量重复定义的问题。