Forum: Compiler & IDEs union in .h deklarieren und über mehrere c-files zugreifen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Lars H. (larsfcfa)


Lesenswert?

Hallo zusammen,

ich versuche folgendes und stecke irgendwie fest:

deklaration einer union in einer test.h datei
1
typedef union {
2
  struct {
3
    uint8_t start[4];
4
    uint8_t end[8];
5
  };
6
  uint8_t array[12];
7
} t_all_values_union;
8
9
extern t_all_values_union all_values;

Später in der test.c-Datei binde ich die test.h ein
1
#include "test.h"
2
t_all_values_union all_values;
und möchte auf die Daten zugreifen, z.B. mit
1
  for (uint8_t i = 0; i < 12; i++) {
2
    all_values.array[i] = i;
3
  }
Der Compiler meckert dann mit:
test.h error: conflicting types for 't_all_values_union'

Was mache ich falsch?

von pegel (Gast)


Lesenswert?

Moin,
ich experimentiere gerade im einem STM32 Projekt mit union/struct.
Dabei habe ich deine test.h/.c benutzt und konnte keinen Fehler 
feststellen.

Kann es sein, dass "t_all_values_union" noch an anderer Stelle im 
Projekt benutzt wird?

von Wilhelm M. (wimalopaan)


Lesenswert?

Include-guard vergessen in test.h

von Lars H. (larsfcfa)


Lesenswert?

Wilhelm M. schrieb:
> Include-guard vergessen in test.h

Hallo Wilhelm,

perfekt, das war die Lösung - wieder was dazu gelernt.
Wenn man die .h Datei in Atmel Studio generiert, wird auch automatisch 
eine guard erstellt, hatte ich aber leider "zu Fuss" getan.

Vielen Dank!

Viele Grüße

von Lars H. (larsfcfa)


Lesenswert?

Wilhelm M. schrieb:
> Include-guard vergessen in test.h

Danke

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.