2

我有 4 个文件:

啊:

typedef struct {
    int a;
} A;

:

#include "a.h"
typedef struct {
    A a;
    int b;
} B;

通道:

#include "a.h"
typedef struct {
    A a;
    double c;
} C;

直流:

#include "b.h"
#include "c.h"
//Here I want to use types A, B and C

int 和 double 只是示例,我遇到的真正问题要复杂得多。
关键是应该可以通过简单的转换将类型 B 和 C 转换为 A。
我要解决的问题是它说 A 类型被多次包含,这是可以理解的,因为 dc 包含 bh 包含 ah,但 ah 也包含在 ch
中 有没有办法做到这一点?

4

2 回答 2

4

#ifndef A_H_INCLUDED
#define A_H_INCLUDED
typedef struct {
    int a;
} A;
#endif

bh

#ifndef B_H_INCLUDED
#define B_H_INCLUDED
#include "a.h"
typedef struct {
    A a;
    int b;
} B;
#endif

ch

#ifndef C_H_INCLUDED
#define C_H_INCLUDED
#include "a.h"
typedef struct {
    A a;
    double c;
} C;
#endif

直流

#include "a.h" // if you're going to use type A specifically do #include the proper file
#include "b.h"
#include "c.h"
//Here I want to use types A, B and C
于 2013-01-20T11:21:52.170 回答
3

使用包括警卫,如下所示:

#ifndef A_INCLUDED
#define A_INCLUDED
typedef struct {
  int a;
} A;
#endif

在每个 .h 文件中,每个文件都有唯一的保护名称

于 2013-01-20T11:21:15.093 回答