Forum: Mikrocontroller und Digitale Elektronik Struct '' has no member named ''


von Peter (Gast)


Lesenswert?

Hallo

ich habe das Problem das beim Compilieren immer die Meldung

Struct 'dateandTime' has no member named 'Milliseconds'

kommt woran liegt das? kann mir jemand helfen?
1
extern struct dateandTime{
2
      uint16_t      Milliseconds=0; 
3
    unsigned char   Seconds=0;
4
    unsigned char   Minutes=0;
5
    unsigned char   Hours=0;
6
  #endif
7
}DateAndTime;
8
9
10
int main (void)
11
{
12
    while(1)
13
    {
14
         DateAndTime.Milliseconds++;
15
    }
16
}

von Peter II (Gast)


Lesenswert?

die frage ist wo der anfange von

> #endif

ist.

von Peter (Gast)


Lesenswert?

Oh sorry ohne das #endif

von Peter II (Gast)


Lesenswert?

> uint16_t      Milliseconds=0;

man kann keine Zuweisung bei der Definition einer struct machen. Das 
sollte doch wohl einen Fehler geben.

von Klaus W. (mfgkw)


Lesenswert?

Kommt vielleicht vorher schon eine Fehlermeldung wg. unbekanntem 
uint16_t,
die du unterschlägst?
Oder wegen der Zuweisung?

Ansonsten musst du mal alles zeigen, und zwar genauso wie es
kompiliert wird - nicht etwas irgendwie ähnliches...

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

Du erzeugst keine Variable vom Typ "DateAndTime", sondern arbeitest 
direkt mit dem Datentyp das geht nicht.
1
DateAndTime t;
2
3
t.Milliseconds++;

von Klaus W. (mfgkw)


Lesenswert?

cyblord ---- schrieb:
> Du erzeugst keine Variable vom Typ "DateAndTime", sondern arbeitest
> direkt mit dem Datentyp das geht nicht.

nee, insofern stimmt es schon: der Typ ist struct dateandTime, das 
Objekt heißt DateAndTime.

von Peter II (Gast)


Lesenswert?

Klaus Wachtler schrieb:
> cyblord ---- schrieb:
>> Du erzeugst keine Variable vom Typ "DateAndTime", sondern arbeitest
>> direkt mit dem Datentyp das geht nicht.
>
> nee, insofern stimmt es schon: der Typ ist struct dateandTime, das
> Objekt heißt DateAndTime.

aber in Kombination mit extern macht das nun auch wieder wenig sinn. Das 
passt alles irgendwie nicht zusammen.

von Cyblord -. (cyblord)


Lesenswert?

Klaus Wachtler schrieb:
> cyblord ---- schrieb:
>> Du erzeugst keine Variable vom Typ "DateAndTime", sondern arbeitest
>> direkt mit dem Datentyp das geht nicht.
>
> nee, insofern stimmt es schon: der Typ ist struct dateandTime, das
> Objekt heißt DateAndTime.

Oha du hast recht, da steht ja gar kein typdef, da ist ja schon die 
Variable...
Ist nochn bisschen früh für mich heute morgen...

von Klaus W. (mfgkw)


Lesenswert?

Peter II schrieb:
> Das passt alles irgendwie nicht zusammen.

Ein wahres Wort.

von Skeptiker (Gast)


Lesenswert?

Klaus Wachtler (mfgkw) schrieb:

> Kommt vielleicht vorher schon eine Fehlermeldung wg. unbekanntem
> uint16_t,
> die du unterschlägst?

Mit Sicherheit, weil ein

#include <stdint.h>

fehlt.

von Peter (Gast)


Lesenswert?

So Danke Leute!
Funktioniert jetzt. Hat an extern und der initialisierung gelegen.

von Tobias (Gast)


Lesenswert?

Peter II schrieb:
>> uint16_t      Milliseconds=0;
>
> man kann keine Zuweisung bei der Definition einer struct machen. Das
> sollte doch wohl einen Fehler geben.

genau.

struct foo {
   int bar;
};

struct foo bar={
    .bar = 1;
};

// ->
bar.bar = 1

klappt aber nur mit gcc

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.