struct Problem

Gast #3223409
Lesenswert?
• ▲
▼
Ja etwas code bereitet mir und meine GCC bauchweh
1
 struct DCF77Maschine {
2
   uint8_t Status;
3
   uint8_t dcfbits[59];
4
   uint8_t counter;
5
};
6
  
7
struct DCF77Maschine DCF77Data;
8
DCF77Data->Status = 1;

Fehlermeldung laut compiler
1
Error  1  expected '=', ',', ';', 'asm' or '__attribute__' before '->' token  C:\Users\Matthias\Desktop\AVR Progs\AVRc\GccApplication1\GccApplication1\GccApplication1.c  57  10  GccApplication1

Hab ich was verpasst so greift man doch auf Structs zu oder binge ich 
was durcheinander?

MFG Matthias
Gast #3223424
Lesenswert?
• ▲
▼
Was meinst du mit Anweisungen also es gibt ne main loop und isrs.
Und das geht auch alles wenn ich
es auskommentiere.
1
//DCF77Data.Status = 1;

und ob . oder -> ist wurst wirft den gleichen fehler warum sollte das 
auch den compiler jucken bedeutet ja das gleiche

MFG matze
#3223435
Lesenswert?
• ▲
▼
Matthias schrieb:

> und ob . oder -> ist wurst wirft den gleichen fehler

Dann hast du noch andere Fehler


> warum sollte das
> auch den compiler jucken bedeutet ja das gleiche

keineswegs.
Oder hast du irgendwo einen Pointer im Spiel?


Das hier
1
struct DCF77Maschine DCF77Data;
ist ein schon ein Struktur-Objekt. Und als solches hat es Member, auf 
die zugegriffen werden kann
1
void foo()
2
{
3
  DCF77Data.Status = 1;
4
}
Moderator #3223439
Lesenswert?
• ▲
▼
Matthias schrieb:
> Was meinst du mit Anweisungen also es gibt ne main loop und isrs.

Die Anweisung
1
  DCF77Data.Status = 1;

Und die sollte innerhalb irgendeiner Funktion stehen und nicht 
außerhalb, wie es in deinem Code-Ausschnitt der Fall ist.

> und ob . oder -> ist wurst wirft den gleichen fehler warum sollte das
> auch den compiler jucken bedeutet ja das gleiche

Nein, . und -> sind überhaupt nicht das Gleiche. Es sieht so aus, als ob 
du dein C-Buch ein zweites Mal durchlesen solltest ;-)
Gast #3223455
Lesenswert?
• ▲
▼
In der tat inerhalb der main rennt ist :)

Du ich habs wärend dem info studium aufgegeben bücher zu lesen wenn man 
jedes semester ne neue sprache einführt

Und der unterschied zwischen . und -> ist mir schon klar aber ich meine 
ansich ist ja das DCF77DATA auch ne adresse bzw Pointer kein wert im 
speicher.
Oder irre ich mich da?


MFG Matze
Gast #3223474
Lesenswert?
• ▲
▼
Der operator->() führt in ANSI-C eine Dereferenzierung durch, der 
Punkt-Operator greift auf Kompositionen direkt zu. Eine gültige 
äquivalente Zuweisung wäre:

&DCF77DATA->Status =1;

Schau dir mal Kernighan / Ritchie's Buch an - besser einmal in guter 
Literatur nachgelesen, als ne reine "geht/geht nicht" Antwort. Das 
dauert zwar länger, hält dafür aber auch länger nach.
Gast #3223503
Lesenswert?
• ▲
▼
1
uint8_t calc_min(volatile uint8_t start,volatile uint8_t stop,volatile struct DCF77Maschine* Data)
2
{
3
  uint8_t Puff = 0;
4
  uint8_t multi = 1;
5
  for(uint8_t c = start;c < stop;c++ )
6
  {
7
    Puff = Puff + (Data->dcfbits[c]*multi);
8
    multi = multi * 2;
9
    if (c == start + 3)
10
    {
11
      multi = 10;
12
    }
13
  }
14
  return Puff;
15
}

Der Unterschied ist mir schon klar :) wie man ja sieht.
Bloß Manchmal sind es halt die kleinichkeiten wie der fall das es nicht 
in der main war
Gast #3223505
Lesenswert?
• ▲
▼
Matthias schrieb:
> Du ich habs wärend dem info studium aufgegeben bücher zu lesen wenn man
> jedes semester ne neue sprache einführt
Das ist bei C nicht so geschickt, da das (wie du siehst) einige Fallen 
hat die auch anderer Sprachen mächtiger Programmierer verwirren 
können...

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.