我正在尝试用 C 做一些项目。
我想知道是否可以#include
从同一个文件中制作两次,以一种让人想起钻石遗产的方式。
IE
- 在交流中有
#include "a.h"
- 在公元前有
#include "b.h"
- 在bh中有
#include "a.h"
有可能#include "b.h"
在交流吗?
我收到一个错误:
some_variable already defined in a.obj
简单:不要在标题中定义变量,只需声明它们:
标题:
// a.h
#ifndef A_H // always use #include guards
#define A_H
extern int my_variable; // declare my_variable
...
#endif
源文件交流:
// a.c
#include "a.h"
int my_variable; // define my_variable
...
源文件 bc:
// a.c
#include "a.h"
#include "b.h"
...
正如其他人所提到的,#include 守卫很有用,并且是一个养成的好习惯,但它们可能不是这个特定问题的解决方案。
您必须在ahextern
中声明变量,然后按以下方式修改您的标头ah :
#ifndef a_h
#define a_h
//your a.h
#endif