C'è un problema di doppia inclusione e conseguente ridichiarazione delle strutture dati.
Ti consiglio di includere nel tuo file di main solo il "func.h" e il "type.h".
Nel file "func.h" e "type.h" utilizza la primititiva (all'inizio del file)
codice:
#ifndef FUNC_H
#define FUNC_H
...codice...
#endif
per il func.h e
codice:
#ifndef TYPE_H
#define TYPE_H
...codice...
#endif
per il type.h
Con questa direttiva al preprocessore eviti le doppie inclusioni.
Considera che il file "func.c" deve essere compreso nel tuo progetto di lavoro in modo che ti basti fare l'include , nel main, dell'header.
E' sbagliato includere sia il ".h" che il ".c" dello stesso file.
Spero di averti aiutato se così nn fosse resto a disposizione.
Ciao