mikrocontroller.net

Forum: PC-Programmierung Lint - Misra Fehler


Autor: gerd43 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Folgender Fehler bringt mit LINT und ich finde dein Fehler einfach 
nicht:

Prohibited Impliciti Conversion: Signed versus Unsigned

bei folgender Zeile:

Extern Array[0] =
{
 { TASTATUR,  TASTEN  ,aSpeicherzahl }
};

Tastatur und Tasten sind Define sSpeicherzahlt ist ein Array.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gerd43 wrote:
> Folgender Fehler bringt mit LINT und ich finde dein Fehler einfach
> nicht:
>
> Prohibited Impliciti Conversion: Signed versus Unsigned
>
> bei folgender Zeile:
>
> Extern Array[0] =
> {
>  { TASTATUR,  TASTEN  ,aSpeicherzahl }
> };

Es ist kein Datentyp angegeben. Daher treten Standardannahmen in Kraft
die besagen, dass Array vom Typ int ist (und ich vermute mal, du hast
irgendwo anders eine andere Definition für Array, wo das ein
unsigned int ist. Die andere Möglichkeit wäre, das irgendeines
von TASTATUR, TASTEN oder aSpeicherzahl ein unsigned Datentyp ist)

Die Angabe einer 0-Größe für das Array ist wohl ziemlich sinnfrei.
Ausserdem stimmt sie nicht mit der Anzahl der Initialisierungen
überein

Dir ist hoffentlich auch klar, dass durch die Angabe einer
Initialisierung das 'extern' keine Wirkung mehr hat. Das ist eine
Definition und keine Deklaration mehr.

Die zusätzlichen {} - Klammern in deiner Initialisierung verleiten
mich allerdings zu der Annahme, dass du wieder mal nicht den Code
gepostet hast, so wie er in deinem Programm steht, sondern einen
anderen. Sieht zwar ähnlich aus, aber ist dann doch was ganz anderes.

Autor: gerd43 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besten dank für die Antwort und Klasse wie hier einem geholfen wird.

SHerleitung Array[1] =
{

{ TASTATUR,  TASTEN  ,aSpeicherzahl },
{ TASTATUR1,  TASTEN1  ,aSpeicherzahl1 }

};



es sieht so aus:
SHerleitung Array[1]

typedef struct
{
   Uint X;
   Uint Y;
   Uint *Z;
} SHerleitung;

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gerd43 wrote:
> Besten dank für die Antwort und Klasse wie hier einem geholfen wird.
>
> SHerleitung Array[1] =
> {
>
> { TASTATUR,  TASTEN  ,aSpeicherzahl },
> { TASTATUR1,  TASTEN1  ,aSpeicherzahl1 }
>
> };
>

Hmm. In mir keimt ein Verdacht.
Kann es sein, dass du die Angabe der Dimensionierung bei einem
Array noch nicht richtig verstanden hast?
Dort wird angegeben, wieviele Elemente das Array umfassen soll
und nicht welches der höchste Index ist.
Ein Array    SHerleitung Array[1]   besteht aus einem Element,
welches den Index 0 trägt.

Obiges kann also so nicht stimmen, da du 2 Initialisierungen
hast, dein Array aber nur 1 Element groß ist.

Lass doch die Anzahl der benötigten Array Elemente den Compiler
selbst ausrechnen. Der braucht nur die Initialisierungen abzuzählen
und weiß dann, wie gross das Array sein muss:

SHerleitung Array[] =
{
  { TASTATUR,  TASTEN  ,aSpeicherzahl },
  { TASTATUR1,  TASTEN1  ,aSpeicherzahl1 }
};

Das aber nur nebenbei.

> typedef struct
> {
>    Uint X;
>    Uint Y;
>    Uint *Z;
> } SHerleitung;


OK. Also alles unsigned.

Welches sind die Datentypen für TASTATUR, TASTATUR1, TASTEN, TASTEN1
aSpeicherzahl und aSpeicherzahl1?

Autor: gerd43 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TASTATUR und 1 = (unsigned short int)
TASTEN und 1 = Define dem hinterlegt ist   0u

Autor: madler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn solche Fehler kommen, ist es wichtig genau den Datentyp aller 
Variablen zu überprüfen.
Dazu musst Du aber noch mehr Infos liefern:
Datentyp von aSpeicherzahl, aSpeicherzahl1
Datentyp von TASTATUR etc. dh. als was sind die defined ?
mit dem define ist das ein bißchen tricksig, am besten hängt man an den 
Wert sowas wie U für unsigned int an.

PS: hmm der Herr Buchegger war schneller ;)

Autor: madler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und aSpeicherzahl, aSpeicherzahl1 ?

Autor: gerd43 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die Speicherzahlen sind (unsigned short int)

Autor: madler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm abgesehen davon, dass es manchmal "Uint" (ist das irgendwo als 
unsigned short int definiert?) und manchmal "unsigned short int" heisst, 
wüsste ich jetzt nicht wo der Fehler herkommen sollte.
Gibt es vielleicht lokale Variablen gleichen Namens ? Array ist ja auch 
kein sehr aussagekräftiger Name ;)

Autor: gerd43 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uint ist definiert als (unsigned short int)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gerd43 wrote:
> TASTATUR und 1 = (unsigned short int)
> TASTEN und 1 = Define dem hinterlegt ist   0u

Und das ganze jetzt bitte nochmal im deutschen Satz.
Oder noch besser: im originalen Code.

Irgendwo hast du einen Mismatch zwischen signed und unsigned.
Dem musst du nachgehen. Aber mit den Ausschnitten die wir
hier zu sehen kriegen, kann man das von hier aus nicht
beurteilen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.