1、 头文件中全局函数多次引用出现重定义的问题
如果一个函数在头文件中声明实现,那么在被多次使用、引用时就会产生重定义的问题。
解决方法:
方法1:不要在头文件中实现函数,而将声明和实现分别写在.h和.cpp中。
方法2:如果一定要在头文件中实现函数,请在.h中实现的函数加上static。
如下:
#ifndef A_H #define A_H #include "stdio.h" static void func() { printf("hello world\n"); } #endif
2、当全局变量被多个类体或者cpp 使用时,也会出现重定义问题
解决方法:
将声明和定义分别写在.h和.cpp中,在声明时前面加extern。
如下:
extern char g_szBuffer[]; // .h 文件中 char g_szBuffer[100]; //.cpp 文件中