Parse Error bei MISRA check

Gast #4224177
Lesenswert?
• ▲
▼
Hallo Zusammen,

ich versuche gerade über meinen C-Code einen MISRA-Check laufen zu 
lassen.
1
#define Makro(port,pin)    ((port*PIN_PER_PORT)+((uint8_t)pin))
2

3
typedef enum
4
{
5
      Name1 = Makro(PORT_B, 1u),  
6
      Name2 = Makro(PORT_B, 2u),  
7
      Name3 = Makro(PORT_B, 4u), 
8
.....
Leider bekomme ich beim Analysieren einen Parse-Error "Unexpected 
Token". Mehr Infos gibt der Fehler nicht her.

Der Code an sich funktioniert und ist schon länger im Einsatz.

Ich bekomm den Fehler weg, wenn ich beim ERSTEN Enum-Element einen 
Festwert hinschreibe. Mit Makro kommt dieser Fehler. Dabei ist egal 
welches Enum-Element als erstes da steht.

Hat wer noch eine Idee?

Mit freundlichen Grüßen und Danke
#4225363
Lesenswert?
• ▲
▼
Tom schrieb:

> Hat wer noch eine Idee?

Kriegst du auch den Fehler, wenn du selbst erst mal Präprozessor spielst 
und die Makrosubstitution machst?
1
#define Makro(port,pin)    ((port*PIN_PER_PORT)+((uint8_t)pin))
2

3
typedef enum
4
{
5
      Name1 = ((PORTB*PIN_PER_PORT)+((uint8_t)1u)),
6
      Name2 = Makro(PORT_B, 2u),
7
      Name3 = Makro(PORT_B, 4u),
8
.....

Wenn ja: dann teil das in mehrere Zeilen auf
1
      Name1 = (
2
               (
3
                PORTB
4
                *
5
                PIN_PER_PORT
6
               )
7
               +
8
               (
9
                 (uint8_t)
10
                 1u
11
               )
12
             ),
13
...

und achte auf die Zeilennummer des Fehlers. Bei welchem Bestandteil 
kracht es? Wenns nicht mehr kracht, dann sukzessive (und in Schritten) 
die einzelnen Zeilen wieder in die ursprüngliche Form bringen, bis es 
kracht.

-> Mitteilung an den Hersteller deines Checkers, dass er einen Fehler im 
Code hat. Über dein Minimalbeispiel, mit dem er das nachvollziehen kann 
wird er sich freuen.

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.