重定义符合分析
不同文件函数重名
改掉就好,一般别人封装好的api都会放在一个namespace里面,自己写的也可以参考这种做法
头文件没跟编译器说明白
添加#pragma once 或者
#ifndef xxx
#define xx
[code]
#endif
伪菱形包含
两个实现文件包含了同一个头文件,这两个又同时被另外一个文件包含
有如下文件1.h,2.h,3.h,my.cpp,2.cpp
2.cpp和3.h都包含了1.h
my.cpp包含了2.h和3.h
2.cpp包含了2.h
这种情况直接用#ifndef是没用的
如果是2.h和3.h包含了1.h是没问题的,
但是!!!如果是2.cpp包含了2.h,并且1.h是被2.cpp而不是2.h包含,就会出错
解决方案如下:
1.把在1.h实现的函数,用1.cpp实现,1.h只声明,不实现
2.如果不想再搞个1.cpp,可以把1.h里面的函数封装到类里面作为静态方法,封装到namespace也没有用
other
如果还有其他情况,上面三个方法无法解决欢迎分享