sizeof(struct_name) in union

Gast #1214326
Lesenswert?

ich dachte ich hätte sowas schonmal gemacht...
geht das nicht?? was tun?

danke!
1
typedef union{
2
  struct {
3
    unsigned char start_flag;
4
    unsigned char seq;
5
    unsigned char rec_id;
6
    unsigned char data[MAX_DATA];
7
    unsigned char check_sum;
8
    unsigned char stop_flag;
9
  } fields;
10
  unsigned char bytes[sizeof(fields)];
11
}Frame;
12

13
../datalink.c:48: error: 'fields' undeclared here (not in a function)
Gast #1214332
Lesenswert?

An der Stelle ist ja die Strukturdeklaration abgeschlossen.

Man könnte d'rüber streiten, ob das der Compiler können sollte. Mir ist 
zwar nichts gegenteiliges bekannt, aber es könnte sein, das es nicht so 
ist.

Ein Ähnliches Problem tritt ja auch bei verlinkten Listen auf.

Ich würde also die struct erstmal deklarieren und anschliessen das 
typedef machen.

Etwa so:
1
  struct xyz{
2
    unsigned char start_flag;
3
    unsigned char seq;
4
    unsigned char rec_id;
5
    unsigned char data[MAX_DATA];
6
    unsigned char check_sum;
7
    unsigned char stop_flag;
8
  };
9

10
typedef union{
11
  struct xyz fields;
12
  unsigned char bytes[sizeof(struct xyz)];
13
}Frame;

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