mikrocontroller.net

Forum: Compiler & IDEs Pointer Fehler???


Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich bekomme hier gerade vom GCC Fehler beschrieben:
error: invalid type argument of '->'
Aber leider sehe ich den Fehler nicht.

Daher wollte ich mal euch um Hilfe bitten.

Fehler soll laut Zeilen Angabe alle Stellen mit "MyBuffer->..."
betreffen!

/*! \fn __inline void DBGU_SetCharToBuffer(tBufferCOM* MyBuffer, UCHAR zeichen)
 * 
 *  \brief Diese INLINE-Funktion schreibt, unter Berueksichtigung der Flags in MyBuffer, 
 *   das "zeichen" in MyBuffer->Buffer[]
 * 
 *  \param *MyBuffer 
 *  \param zeichen
 *
 */
__inline void DBGU_SetCharToBuffer(tBufferCOM* MyBuffer, UCHAR zeichen)
{
  if (MyBuffer->FlagsBuffer->stop==true)
    return;
    
  MyBuffer->Buffer[MyBuffer->IndexBuffer->wr_index]=zeichen;
        if (++MyBuffer->IndexBuffer->wr_index == DBGU_RX_BUFFER_SIZE) 
       MyBuffer->IndexBuffer->wr_index=0;
     
        if (++MyBuffer->IndexBuffer->counter == DBGU_RX_BUFFER_SIZE)
        {
                MyBuffer->IndexBuffer->counter=0;
                MyBuffer->FlagsBuffer->overflow=true;
        }
}

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähm... ich bin zwar jetzt nicht so der C-Crack (oder wie die meisten 
hier so sagen "-Freak"), aber was ist wenn du "->" durch "." ersetzt?

z.B.:
    if (MyBuffer.FlagsBuffer.stop==true)

Gruß,
Magnetus

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht mal die Deklaration von tBufferCOM posten? Ich schätze, das 
ist keine Struktur.

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
typedef struct{
  tFlagsBuffer FlagsBuffer;
  tFlagsCOM FlagsCOM;
  tIndexCOM IndexBuffer;
  u08 Buffer[DBGU_RX_BUFFER_SIZE];  
}tBufferCOM;

Doch "tBufferCOM" ist der Name für eine Struktur!

Autor: Robert S. (razer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber die inneren Strukturen sind keine Poiter. Das sind STRUKTUREN.

Deshalb musse es heißen statt
  if (MyBuffer->FlagsBuffer->stop==true)
so:
  if (MyBuffer->FlagsBuffer.stop==true)

Das must du dann auf alle anderen Zugriffe übernehmen.

Gruß Robert

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DANKE.

Manchmal sieht man den Wald vor Bäumen nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.