0

我正在尝试用 C 做一些项目。

我想知道是否可以#include从同一个文件中制作两次,以一种让人想起钻石遗产的方式。

IE

  • 交流中有#include "a.h"
  • 公元前#include "b.h"
  • bh中有#include "a.h"

有可能#include "b.h"交流吗?

我收到一个错误:

some_variable already defined in a.obj
4

2 回答 2

6

简单:不要在标题中定义变量,只需声明它们:

标题:

// 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 守卫很有用,并且是一个养成的好习惯,但它们可能不是这个特定问题的解决方案。

于 2012-12-18T16:44:55.470 回答
2

您必须在ahextern中声明变量,然后按以下方式修改您的标头ah :

 #ifndef a_h
 #define a_h

   //your a.h 

 #endif
于 2012-12-18T16:44:59.083 回答