我正在尝试在C中制作一些项目。
我想知道是否可以两次从同一档案中制作#include
,以回忆钻石遗产。
即
#include "a.h"
#include "b.h"
#include "a.h"
是否可以在 a.c 中使用#include "b.h"
?
我收到错误:
some_variable already defined in a.obj
答案 0 :(得分:6)
简单:不要在标题中定义变量,只需声明它们:
部首:
// a.h
#ifndef A_H // always use #include guards
#define A_H
extern int my_variable; // declare my_variable
...
#endif
源文件a.c:
// a.c
#include "a.h"
int my_variable; // define my_variable
...
源文件b.c:
// a.c
#include "a.h"
#include "b.h"
...
正如其他人所提到的,#include guards很有用,也是一个很好的习惯,但它们可能不是解决这个特定问题的方法。
答案 1 :(得分:2)
您必须在 a.h 中声明extern
变量,然后按以下方式修改标题 a.h :
#ifndef a_h
#define a_h
//your a.h
#endif