-         

Ergebnis 1 bis 3 von 3

Thema: C-Syntax berprfung

  1. #1
    Erfahrener Benutzer Fleiiges Mitglied
    Registriert seit
    18.12.2006
    Ort
    Eberbach
    Beitrge
    199

    C-Syntax berprfung

    Anzeige

    Hallo,

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

    Als Ergebnis entstand der Artikel C-Syntax berprfung in der Rubrik Programmierung auf dem AsuroWiki.

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

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    01.02.2007
    Ort
    Ashausen
    Alter
    58
    Beitrge
    64
    Hallo Hermann,

    danke fr den Tipp.

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

    Code:
    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:
    Miniaturansichten angehngter Grafiken Miniaturansichten angehngter Grafiken warnings.jpg  

  3. #3
    Erfahrener Benutzer Fleiiges Mitglied
    Registriert seit
    18.12.2006
    Ort
    Eberbach
    Beitrge
    199
    Hallo _HP_,
    Zitat Zitat von _HP_
    Hallo Hermann,

    danke fr 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 natrlich Recht, zuerst sollte man mittels avr-gcc -Wall ... schauen, was der Compiler so von sich gibt. Wenn man da nicht fndig 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 ...
      Code:
      ...
      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:
      Code:
      ...
      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
          }
      ...
      ============================================

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhnge hochladen: Nein
  • Beitrge bearbeiten: Nein
  •