Redefinição; tipos básicos diferentes (typedef struct)

Eu estou tendo um pouco de dificuldade tentando obter estruturas para funcionar corretamente quando eles são definidos em arquivos diferentes. De tanto quanto eu posso dizer, o erro está me dizendo que a estrutura está sendo definida em dois momentos diferentes. Eu acredito que talvez eu precise usar externamente em algum lugar? Eu tentei experimentar e procurar ajuda no Google, mas sem sucesso.

Qualquer ajuda seria muito apreciada, obrigado. Todos os meus quatro arquivos estão abaixo.

ARQUIVO: Foo.h

typedef struct
{
    int number;
} my_struct;    // Redefinition; different basic types

ARQUIVO: Foo.c

#include "Foo.h"
#include "Bar.h"
#include <stdio.h>

my_struct test;

int main(void)
{
    test.number = 0;
    DoSomething(&test);
    printf("Number is: ", &test.number);
}

ARQUIVO: Bar.h

#include "Foo.h"

void DoSomething(my_struct *number);

ARQUIVO: Bar.c

#include "Bar.h"

void DoSomething(my_struct *number)
{
    number->number = 10;
}

questionAnswers(1)

yourAnswerToTheQuestion