Tengo una pequeña duda en al programacion modular. Pongamos por ejemplo este codigo:

main.cpp
Código:
#include "prueba1.h"

int main(){
  funcion1();
}
prueba1.h
Código:
#pragma once
#include "prueba2.h"


typedef char tipo;

void funcion1();
prueba1.cpp
Código:
#include "prueba1.h"

void funcion1(){
  funcion2();
}
prueba2.h
Código:
#pragma once
#include "prueba1.h"

void funcion2();
prueba2.cpp
Código:
#include "prueba2.h"

void funcion2(){
  tipo a;  
}
Al compilar me dice que tipo no esta definido. No se como se propaga los tipos definidos entre modulos. Creo que definiendolo en cada modulo se soluciopna, pero entonces no me vale de nada tener una structura grande en un modulo esclusivo para ella, si tengo que definirla en cada modulo.


PD: Se me olvido decir que es en C, pero es obvio.