Forum: PC-Programmierung Misra Fehler


von Gerd (Gast)


Lesenswert?

Hallo zusammen

folgenden Fehler bringt mir Visual Lint:

Violates MISRA 2004 Rquired Rule 10.1 Prohibited Implicit Conversion: 
Sgined versus Unsigned


Im Misra heisst es dann: The right hand operand of a && or \\ operator 
shall not contain side effects.

Hier die Code Zeile:

Uint aProbahib[Jut+1]   = {40, 20, 25 };

Wie muss ich ändern?

Besten Dank

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Welchen Datentyp hat "Jut"?

von Gerd (Gast)


Lesenswert?

das ist Define

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Also wird es ein int sein. Und ein int als Array-Index kann welche 
Probleme haben?

Genau: Er kann negativ werden. Und das geht in die Hose.

von Gerd (Gast)


Lesenswert?

Wie stelle ich fest ob mein Define ein Int ist? reicht dann ein ändern 
auf signed?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Jede Zahlenkonstante ist ein int, sofern nicht eindeutig als was anderes 
gekennzeichnet.

  a = 4;
  #define BLUMENKOHL 4

Die 4 ist hier ein int.

Du willst nicht "signed int" haben, sondern unsigned int.

Das geht mit dem Suffix U:

  a = 4U;
  #define BLUMENKOHL 4U;

Damit ist für den Compiler die Konstante ein unsigned int.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.