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