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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.