因为在头文件中有
#ifndef XXX
#define XXX
...
#endif
所以在编译的时候,头文件不会被重复包含,不会出现重定义的问题。
但是如果头文件中有函数的定义,那么不同cpp文件都包含这个头文件,在汇编成.o文件后,不同的.o文件中都含有头文件中函数的定义,链接阶段就会出现重定义的问题。
如果出现这种错误,找到提示信息中函数所在的头文件,在头文件中保留函数的声明,把函数的实现都删掉,放在一个单独的cpp文件中。
头文件中一定要有函数的声明,否则编译器在类型检查的时候看不见函数的名字。