Wie Warnung " differ in signedness" ausschalten?

OP #1142194
Die neueren AVR-GCC's warnen, wenn "-Wall" eingeschaltet ist, vor einer 
falschen Verwendung von z.B. char / unsigned char; es gibt einige 
Optionen, wie man von "-Wall" einzelne Warnungen wegnehmen kann, z.B. 
"-Wno-unused-variable", damit alles außer unbenutzten Variablen 
"abgewarnt" wird.

Aber zum Wegnehmen von Warnungen vor "differing signedness" finde ich 
keinen Schlüssel. Kennt jemand einen solchen? "-Wno-sign-compare" wirkt 
hier nicht.

Vielen Dank für einen Hinweis.

Günter
#1142199
Am besten ist es, diese Warnungen durch Änderungen im QUellcode 
wegzubekommen. 'differ in signedness' kann eine harmlose Warnung sein, 
sie kann aber auch durchaus auf einen realen Fehler und ein 
tatsächliches Problem hinweisen.
OP #1142211
Da hast Du auf jeden Fall recht, dies ist mir auch bewußt. Es geht hier 
im wesentlichen um ein Projekt, bei dem Stringdefinitionen und 
Ausgabefunktionen nicht immer ganz sauber bezgl. der Signedness 
programmiert wurden (char und uint9_t vermischt) und das von einer 
älteren WinAVR-Version (die keine signedness-Warnungen ausspuckte) auf 
eine neuere (peniblere) Version umgestellt wurde; hier hätte ich gerne 
diese eine Warnung unterdrückt, damit nicht andere Warnungen in diesen 
untergehen. Code-Änderungen wären recht aufwendig.

Darf ich Deine Antwort so verstehen, daß es keine Möglichkeit gibt, 
diese eine Warnung abzustellen?
Persönliche Seite #1142226
Wenn du sicher bist, daß es nur um Ausgabe geht und das Vorzeichen 
wiklich keine Rolle spielt, gibt's zuwas wie -funsigned-char, welche 
default-mässig alle char als unsigned auslegt. Allerdings wird dann bei 
int8_t/char gemeckert ;-)

Ausserdem fliegt das aus der Kurze, wenn wirlich mal das Vorzeichen 
gebraucht wird.

Angestrebte Lösung ist also suberer Code, -funsigned-char ist ne Option 
für Tippfaule, ich persönlich mag und verwende sie nicht.

Johann
#1142230
Günter R. wrote:

> Darf ich Deine Antwort so verstehen, daß es keine Möglichkeit gibt,
> diese eine Warnung abzustellen?

Das weiß ich ehrlich gesagt nicht. Möglich das es was gibt.

> Code-Änderungen wären recht aufwendig.

In den meisten Fällen läuft das auf einen Cast hinaus. Selbst in 
wirklich aufwändigen Projekten ( > 10000 LOC) bin ich noch nie länger 
als 2 Tage bei sowas gesessen.

Und es ist mit Sicherheit besser mal einen Vormittag lang alle 
angemotzten Codestellen zu untersuchen und dann hat man einen sauberen 
Code als einfach die Warnung zu unterdrücken. Ich kanns dir nur ans Herz 
legen, diese Unsauberkeiten zu bereinigen. Man glaubt gar nicht, was 
einem dabei noch so alles im Code auffällt.
OP #1142240
Jörg Wunsch wrote:
> Das Einzige, was ich in der man page erstmal finde, ist
> -Wnosign-compare.

Das hatte ich auch schon gefunden, funktioniert aber nicht (soll nur für 
C++ sein).

Aber Karl Heinz hat recht, und Johann auch; ich werde den Code 
"säubern".

Dank an euch!

Günter
#1142317
Das blöde an dieser Warnung ist, daß sie sehr "unsauber" ist.

Sie erfolgt nur bei char Strings, wo das Vorzeichen wurscht ist (es gibt 
keine negativen Buchstaben).

Bei char Variablen, wo es eine Rolle spielen könnte, weil damit 
gerechnet wird, erfolgt dagegen keine Warnung.

Diese Warnung suggeriert einem also Probleme bzw. Sicherheit an den 
völlig falschen Stellen.


Man hätte diese Warnung entweder konsequent implementieren sollen oder 
besser ganz sein lassen.


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.