Vinculando arquivos .h com .c com protetores de cabeçalho #ifdef

Estou tendo problemas para vincular arquivos .h e .c, eu também li alguns tópicos sobre este problema e todos eles é um pouco vago e ainda não consigo entender completamente o conceito dele, e estou tendo um monte de problemas de ligação ,Diga que eu tenho b.c e b.h que eu vou usar em a.c, e estou confuso se incluir bh ac e bc porque bc em si precisa conhecer a estrutura definida em bh, eu tenho alguma função que tem seu protótipo em bh e é definido em bc, que também usam a estrutura em bh, eu não sou incluindo bh em bc porque o que eu sei bh é mais como uma interface para ac que usará as funções em bc .. Aqui um exemplo mais claro

arquivo b.h

typedef struct{
int x, y;
}myStruct;

void funct1(myStruct);
void funct2(myStruct);

arquivo b.c

void funct1(myStruct x)
{
    //do something
}

void funct2(myStruct y)
{
     //do something
} 

arquivo a.c

#include "b.h"

int main()
{
myStruct x;
  funct1(x);
  funct2(y);
return 0;
}

Executou o comando no cygwin:gcc b.c a.c -g

Agora, a parte confusa, eu tenho um erro de ligação em que quando b.c é compilado, não é possível detectar a estrutura e os protótipos em b.h. Porque tudo o que sei é que b.h é usado para vincular b.c de a.c mas quando ambos .c são compilados, parece que b.c não consegue encontrar sua estrutura e protótipos,

Por que eu não incluí b.h em b.c? Responda: Cuz como o que eu sei, bh já está incluído no ac e quando eu incluí-lo novamente em bc, eu estarei fazendo inclusões duplas <--- isso é o que eu aprendi até agora e eu sei que há #ifdef mas parece que não funciona, talvez eu ainda não saiba como usá-lo, se você sabe, por favor, sinta-se livre para discutir isso.

Se você tem alguma idéia de como fazê-lo, sinta-se à vontade para me contar um pouco.

existe uma diretiva #ifdef, mas não consigo imaginar como fazer isso.

OBSERVAÇÃO: ASSUME QUE TODOS OS CÓDIGOS ACIMA SÃO SINTATICAMENTE CORRETOS se houver alguma palavra incorreta, por favor, ignore, eu sou somente após as inclusões entre .h e .c

questionAnswers(4)

yourAnswerToTheQuestion