2

私は4つのファイルを持っています:

ああ:

typedef struct {
    int a;
} A;

bh:

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

チャンネル:

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

DC:

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

int と double は単なる例であり、実際の問題ははるかに複雑です。
ポイントは、単純にキャストするだけで、タイプ B と C を A に変換できるはずだということです。
私が戦っている問題は、タイプ A が複数回含まれていると言われていることです。これは、dc には ah を含む bh が含まれているため理解できますが、ch にも ah が含まれ
ているためです。それを行う方法はありますか?

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

DC

#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 に答える