原因1:
在A.h中包含了B.h,B.h中包含了C.h,然后C.h中包含了A.h,这样就相当于A.h自己包含了自己,然后在编译A.h时(确切的说应该是编译包含A.h的c文件时)A.h就会被展开两次,第二次展开的时候就会报错。
解决:不在C.h中包含A.h,编译通过
总结:其它出现这种问题的肯定都是因为在复杂的头文件包含关系中出现自己包含自己的情况
原因2:
不同头文件中的宏名“撞车”(#ifndef 后面跟的名称重名),这时就会导致你看到头文件明明存在,但编译器却硬说找不到声明的状况。