RoboterNetz.de Foren-Übersicht Werbung
 Home  •  Forum  •  Suchen •  Mitgliederliste  •  RN-Landkarte  •  Ränge  •  Statistik  •  Download •  Album  •  Links  •  Kalender  •  Letzte Themen
 RN-Wissen Artikelbereich  •  Mitarbeiter  •  Benutzergruppen  •  Chat  •  Registrieren  •  FAQ  •  Profil  •  log in, Nachrichten zu lesen  •  Login
Kalender 
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Neues Thema eröffnenNeue Antwort erstellen
Vorheriges Thema anzeigen Dieses Thema einem Freund schickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Textdatei speichernPrintable versionlog in, Nachrichten zu lesen Nächstes Thema anzeigen
Autor Nachricht
HermannSW

Fleißiges Mitglied
Fleißiges Mitglied




Anmeldungsdatum: 18.12.2006
Beiträge: 195
Wohnort: Eberbach

germany.gif
Beitrag Verfasst am: 24.04.2007, 00:19 Antworten mit ZitatNach oben

Hallo,

motiviert durch den menschlichen C-Syntax-Checker Smile in folgendem Beitrag fragte ich mich, mit welchen Tools (und wie) man die C-Syntax von Asuro-Programmen automatisch überprüfen lassen kann.

Als Ergebnis entstand der Artikel C-Syntax Überprüfung in der Rubrik Programmierung auf dem AsuroWiki.

Ich hoffe, dieser Artikel kann bei kniffligen Problemen helfen ...

_________________
Gruß, Hermann.
myIrAsuro.Image
Offline Benutzer-Profile anzeigen E-Mail senden Website dieses Benutzers besuchen
_HP_






Anmeldungsdatum: 01.02.2007
Beiträge: 64
Wohnort: Ashausen
Alter: 52

germany.gif
Beitrag Verfasst am: 24.04.2007, 10:25 Antworten mit ZitatNach oben

Hallo Hermann,

danke für den Tipp.

Liegt es an dem zu einfachen Beispiel, oder denke ich schief - aber ich bekomme diese Fehler schon vom Compiler angezeigt:


test.c: In function 'main':
test.c:5: warning: suggest parentheses around assignment used as truth value
test.c:6: warning: statement with no effect


... und wenn man in Eclipse programmiert, dann bekommt man die fehlerhaften Zeilen auch noch unterstrichen:
Offline Benutzer-Profile anzeigen
HermannSW

Fleißiges Mitglied
Fleißiges Mitglied




Anmeldungsdatum: 18.12.2006
Beiträge: 195
Wohnort: Eberbach

germany.gif
Beitrag Verfasst am: 25.04.2007, 23:25 Antworten mit ZitatNach oben

Hallo _HP_,
_HP_ hat folgendes geschrieben::
Hallo Hermann,

danke für den Tipp.

Liegt es an dem zu einfachen Beispiel, oder denke ich schief - aber ich bekomme diese Fehler schon vom Compiler angezeigt:
...
da hast Du natürlich Recht, zuerst sollte man mittels avr-gcc -Wall ... schauen, was der Compiler so von sich gibt. Wenn man da nicht fündig wird, und trotzdem noch komisches Verhalten im Programm hat, kann ja mit splint weitermachen.

Ich habe mal die Dateien der Asurolib unter die Lupe genommen, und unter den unheimlich vielen (wahrscheinlich) harmlosen Meldungen zumindest zwei gefunden, welche nicht bei avr-gcc -Wall ... reported werden:
  • In diesem Fall brennt nichts an wegen AND mit 0x00, aber da sollte besser eine Zuweisung stehen ...
    ...
    lcd.c:117:3: Variable dataPins used before definition
      An rvalue is used that may not be initialized to a value on some execution
      path. (Use -usedef to inhibit warning)
    ...

    ==============================================
    ...
    void SetDataLCD(unsigned char data)
    {
      unsigned char dataPins;             // Pin Compatibility

      // Set First Nibble Data to DataPins on PCF8574
      dataPins &= 0x00;                                           <<<---- Zeile 117
      dataPins |= ((data & 0x80) >> 7) << LD7;
      dataPins |= ((data & 0x40) >> 6) << LD6;
      dataPins |= ((data & 0x20) >> 5) << LD5;
      dataPins |= ((data & 0x10) >> 4) << LD4;
    ...
    ==============================================
  • Unreachable Code in Form des return 0; in main() nach dem while (1); sind wir ja gewohnt, aber in PCDemo hat sich da noch eine Stelle eingeschlichen:
    ...
    PCDemo.c: (in function PCDemo)
    PCDemo.c:147:7: Unreachable code: break
      This code will never be reached on any possible execution. (Use -unreachable
      to inhibit warning)
    ...

    ============================================
    ...
        switch (cmd)
        {
        case RWD_KEY :
          PCRwd();
          break;
        case FWD_KEY :
          PCFwd();
          break;
        case LEFT_KEY :
          PCLeft();
          break;
        case RIGHT_KEY :
          PCRight();
          break;
        case STOP_KEY :
          PCStop();
          break;
        case ESC_KEY :
          return;
          break;                         <<<--- Zeile 147
        }
    ...
    ============================================


_________________
Gruß, Hermann.
myIrAsuro.Image
Offline Benutzer-Profile anzeigen E-Mail senden Website dieses Benutzers besuchen
Beiträge vom vorherigen Thema anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen
Vorheriges Thema anzeigen Dieses Thema einem Freund schickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Textdatei speichernPrintable versionlog in, Nachrichten zu lesen Nächstes Thema anzeigen



 Gehe zu:   



Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen




Die große Community für Robotik-, Mikrocontroller- und Elektronik Bastler als auch Experten
 Roboternetz RSS2.0 News Feed
Alle Zeiten sind GMT + 1 Stunde