- Reichelt Elektronik    Werbung      
Ergebnis 1 bis 10 von 11

Thema: C18: Warning [2054] suspicious pointer conversion

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    08.06.2010
    Beiträge
    26
    Danke für die Antworten.

    Zumindestens ist mir mal ein Licht aufgegangen was da passiert.

    Der Compiler kopiert also alle Variablen erstmal auf den Stack, bevor sie bearbeitet werden. Wenn eine Variable als volatile gekennzeichnet wurde, dann muss der Compiler zusätzlichen Code einbauen, damit jedes mal geprüft wird, ob die Variable zwischenzeitlich (ausserhalb der aktuell laufenden Routine, z. B. Interrupt-Routine) verändert wurde, bevor er sie weiterbearbeitet werden darf. Nur so kann die Variable auf dem Stack aktuell gehalten werden.

    Volatile bedeutet also: Halte Variable, vor Weiterverarbeitung auf dem Stack, aktuell.

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    08.06.2010
    Beiträge
    26
    So Leute, falls hier noch einer lebt. Habe das Problem endlich gelöst, hahaha. Nachdem ich heute bei einem neuen Projekt das EEPROM vergewaltigen wollte hatte ich wieder diese leidige Warnung: Warning [2054] suspicious pointer conversion.

    Wichtig ist, wenn man eine Integer-Variable hat, dass man diese als union deklariert, z. B.:

    static volatile union _varReed {
    unsigned int LH;
    struct {unsigned char L; unsigned char H;};
    } varReed;

    Aufgerufen muss eine Routine (z.B. WriteEEdata16) dann so werden:

    WriteEEdata16(&varReed.L, eepromaddresse); //(varReed.LH) => EEPROM.

    Man darf also nur ein char (varReed.L, nicht varReed.LH) übergeben, dann gibt es auch keine Warnung mehr.
    Geändert von BioSniper (15.07.2012 um 11:38 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

    Werbung      fchao-Sinus-Wechselrichter AliExpress