是否可以#Include一个“钻石inheritance”结构?
我想用C做一些项目。
我想知道是否有可能从同一个文件中两次制作#include
,以一种回忆钻石遗产的方式。
即
- 在ac中有
#include "ah"
- 在bc中有
#include "bh"
- 在bh中有
#include "ah"
是否可以在交流中 #include "bh"
?
我收到一个错误:
some_variable already defined in a.obj
简单:不要在头文件中定义变量,只需声明它们:
标题:
// ah #ifndef A_H // always use #include guards #define A_H extern int my_variable; // declare my_variable ... #endif
源文件ac:
// ac #include "ah" int my_variable; // define my_variable ...
源文件bc:
// ac #include "ah" #include "bh" ...
正如其他人所提到的,#include guards是有用的,也是一个很好的习惯,但它们可能不是解决这个特定问题的方法。
你要声明extern
的变量啊 ,然后用以下方式修改你的头啊 :
#ifndef a_h #define a_h //your ah #endif