Redefinición; diferentes tipos básicos (typedef struct)

Tengo algunos problemas para que las estructuras funcionen correctamente cuando están definidas en diferentes archivos. Por lo que puedo decir, el error me dice que la estructura se está definiendo dos veces diferentes. Creo que tal vez necesito usar extern en algún lugar? He intentado experimentar y buscar ayuda en Google, pero sin éxito.

Cualquier ayuda sería apreciada, gracias. Los cuatro de mis archivos están abajo.

ARCHIVO: Foo.h

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

ARCHIVO: 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);
}

ARCHIVO: Bar.h

#include "Foo.h"

void DoSomething(my_struct *number);

ARCHIVO: Bar.c

#include "Bar.h"

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta