Sehr aussagekräftig, dein Post. Compiler? Architektur? Welche
Fehlermeldung?
Aber naja.
definestructs.h wird beim Compilieren vermutlich zweimal eingebunden,
daher die doppelte definition.
#include-Zeilen gehören, wann immer es geht, in Quelltextdateien (*.c)
und nicht in Header!
Beispiel:
1 | ------- definition.h
|
2 | typedef struct blabla {}; blastruct;
|
3 |
|
4 |
|
5 |
|
6 | ------- header-A.h
|
7 | ...
|
8 | #include "definition.h"
|
9 | ...
|
10 |
|
11 |
|
12 | ------- header-B.h
|
13 | ...
|
14 | #include "definition.h"
|
15 | ...
|
16 |
|
17 |
|
18 |
|
19 | ------- main.c
|
20 | #include "header-A.h"
|
21 | #include "header-B.h"
|
Schreib globale Header immer so:
1 | /* definition.h */
|
2 | #ifndef DEFINITION_H
|
3 | #define DEFINITION_H 1
|
4 |
|
5 | ...typedef...
|
6 |
|
7 | #endif
|
Das passt dann automatisch auf, dass jeder Header nur einmal eingebunden
wird. Reicht ja auch.