This is usually solved by using at least an extra H file storing some common parts of a.h and b.h. But, I really didn't want this so I solved it in following way. Have in mind that this is a trivial example:
main.c
#include "a.h"
#include "b.h"
int main(){
a * v1;
b * v2;
return 0;
}
a.h
#ifndef CO_A_H
#define CO_A_H
struct a_t;
#include "b.h"
typedef struct a_t {
struct b_t * value;
} a;
#endif
a.c
#include "a.h"
b * a_b(a * self){
return 0;
}
b.h
#ifndef CO_B_H
#define CO_B_H
struct b_t;
#include "a.h"
typedef struct b_t {
struct a_t * value;
} b;
#endif
b.c
#include "b.h"
a * b_a(b * self){
return 0;
}
No comments:
Post a Comment