xc32-gcc structure vordefinieren.

Gast #4267083
Lesenswert?
• ▲
▼
Ich habe:
1
typedef union
2
{
3
  struct
4
  {
5
    unsigned char  wday;    // day of the week, 00-06
6
    unsigned char  mday;    // day of the month, 01-31
7
    unsigned char  mon;    // month, 01-12
8
    unsigned char  year;    // years, 00-99
9
  };                // field access
10
  unsigned char    b[4];    // byte access
11
  unsigned short    w[2];    // 16 bits access
12
  unsigned long    l;      // 32 bits access
13
}realDate;
14

15

16
// Wie kann ich hier ein datum vordefinieren?
17
// z.B. date_now.wday = 1;
18
static realDate date_now;
Gast #4267107
Lesenswert?
• ▲
▼
genau
1
#include <stdio.h>
2
#include <stdlib.h>
3

4
typedef union
5
{
6
  struct
7
  {
8
    unsigned char  wday;    // day of the week, 00-06
9
    unsigned char  mday;    // day of the month, 01-31
10
    unsigned char  mon;    // month, 01-12
11
    unsigned char  year;    // years, 00-99
12
  };                // field access
13
  unsigned char    b[4];    // byte access
14
  unsigned short    w[2];    // 16 bits access
15
  unsigned long    l;      // 32 bits access
16
}realDate;
17

18
int main()
19
{
20
    static realDate date_now;
21
    date_now.wday = 1;
22
    date_now.mday = 2;
23
    date_now.mon = 3;
24

25
    printf("%s %x\n",date_now.b,date_now.l);
26

27

28
    return 0;
29
}
Gast #4267814
Lesenswert?
• ▲
▼
1
realDate d={1,2,3,70}; // setzt wday=1,..,year=70

Unions können unter C89, C90 usw. mit einer Liste intitialisiert werden. 
Allerdings kann immer nur das erste Element einer Union auf diese Weise 
inititalisiert werden (also der Struct am Anfang).

Die explizite Initialilisierung einzelner Member ist mit C99 möglich. Da 
du aber offensichtlich gcc verwendest (wo u.a. auch die struct member 
ohne Namne erlaubt sind..), kannst du das auch im C90 Modus verwenden. 
Siehe auch:

https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.