Problem mit globalen struct

Gast #840511
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
Gast #840512
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren