Forum: PC-Programmierung union in c


von Tim (Gast)


Lesenswert?

hi ich habe eine Problem mit unions in c.
solange ich nur eine Union nutzte klappt es und es wird umgerechnet.
Da ich jedoch nicht nur einen Wert umrechnen will brauch ich mehr als
eine Union.
Union 1:
union {float value; unsigned char byte[4];} Wert1;
dannach weise ich  Wert1.byte[x]jeweils einen Wert zu und bekomme nun
einen floatwert.
so weit so gut. sobald ich einen 2 union nutzte:
union {float value; unsigned char byte[4];} Wert2;
und dann eben auch Wert2.byte[x] die Werte zuweise bekomme ich
Fehlermeldungen
"data definition has no type or starage class"
kann ich nur eine Union zur Zeit nutzen?
Wie kann ich das Problem umgehen?

Gruß
Tim

von Christoph _. (chris)


Lesenswert?

Ein Minimalbeispiel, bei dem der Fehler auftritt, könnte evtl. nicht
schaden. Am wichtigsten ist häufig genau die Zeile, auf die die
Fehlermeldung zeigt; eine Handvoll Zeilen drumherum wären auch nicht
verkehrt.

von Tim (Gast)


Angehängte Dateien:

Lesenswert?

Die 2. union ist auskommentiert und so klappt das compilieren.
sobald ich die wieder rein nehme geht es nicht mehr.

Es handelt sich dabei um ein Cgi-File das mir Messwerte ausgibt die in
Hex später aus einer Datei eingelesen werden und dann auch in FLoat mit
der union umgerechnet werden sollen.

gruß
Tim

von Karl H. (kbuchegg)


Lesenswert?

Gib halt der union selbst einfach einen Datentypnamen.
Es gibt sowieso keinen Grund warum du 2 mal denselben
Datentyp definierst:

#include <stdio.h>
#include <stdlib.h>

union FloatConverter
{
  float value;
  unsigned char byte[ sizeof float ];
};

int main (void)
{
  unsigned char Wert1[10] ;
  unsigned char Wert2[10] ;

  union FloatConverter dr;
  union FloatConverter st;

  dr.byte[0]=Wert1[4];
  dr.byte[1]=Wert1[3];
  dr.byte[2]=Wert1[2];
  dr.byte[3]=Wert1[1];

  st.byte[0]=Wert2[3];
  st.byte[1]=Wert2[2];
  st.byte[2]=Wert2[1];
  st.byte[3]=Wert2[0];

  ...

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.