Forum: Compiler & IDEs Problem mit globalen struct


von herrmann (Gast)


Lesenswert?

Hallo

bekomme einen fehler beim compiling.

redefinition of 'struct _at45db'

hier mein code

definestructs.h

typedef struct _at45db{

uint8_t man_id;
uint8_t density;
uint8_t mlc_code;

}at45db;


main.h

#include "definestructs.h"
at45db flashinfo;


main.c
#include "main.c"

read_flash_infos(flashinfo.man_id);

Danke

von Sven P. (Gast)


Lesenswert?

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.

von herrmann (Gast)


Lesenswert?

Danke so gehts

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.