Viele Warnungen beim Kompilieren

Gast #473957
Hallo,

ich kriege folgende Warnings beim compilieren mit WinAVR gcc:
1
webcam/mca25.c:79: warning: pointer targets in passing argument 3 of 'mca25_grab_data' differ in signedness
2
webcam/mca25.c:114: warning: pointer targets in passing argument 3 of 'mca25_grab_data' differ in signedness
3
webcam/mca25.c: In function 'mca25_start_image_grab':
4
webcam/mca25.c:391: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
5
webcam/mca25.c:410: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
6
webcam/mca25.c:433: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
7
webcam/mca25.c:434: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
8
webcam/mca25.c: In function 'mca25_init':
9
webcam/mca25.c:491: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
10
webcam/mca25.c:500: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
11
webcam/mca25.c:508: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
12
webcam/mca25.c:517: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
13
webcam/mca25.c:525: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
14
webcam/mca25.c:534: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
15
webcam/mca25.c:544: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
16
webcam/mca25.c:553: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
17
webcam/mca25.c:562: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
18
webcam/mca25.c:573: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
19
webcam/mca25.c:584: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
20
webcam/mca25.c:604: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
21
webcam/mca25.c:617: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
22
webcam/mca25.c:625: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
23
webcam/mca25.c:660: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
24
webcam/mca25.c: In function 'mca25_configure':
25
webcam/mca25.c:698: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
26
webcam/mca25.c:711: warning: pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
27
webcam/mca25.c: In function 'mca25_pgm_send':
28
webcam/mca25.c:777: warning: 'old[2]' may be used uninitialized in this function
29
webcam/mca25.c:777: warning: 'old[1]' may be used uninitialized in this function
30
webcam/mca25.c:777: warning: 'old[0]' may be used uninitialized in this function


Sind die Warnungen Gefährlich?
Gast #473963
>'old[0]' may be used uninitialized in this function

Heisst nur, dass du der Variablen zu diesem Zeitpunkt nichts zugwiesen 
hast. Ein Auslesen würde undefinerte Werte liefern.

>pointer targets in passing argument 1 of 'strncmp_P' differ in signedness
klingt nach verschiedenen Variablentypen.
Du versuchst "strncmp_P" einen unerwarteten Pointertype zu übergeben.

Das machst du mehrfach, und auch mit anderen Funktionen.

Da das Warnings sind, funktioniert das Programm (zumindest ist es 
syntaktisch richtig), kann aber ungewollte Ergenisse liefern.
#473980
> Da das Warnings sind, funktioniert das Programm (zumindest ist es
> syntaktisch richtig),

Es empfiehlt sich aber trotzdem, den Code soweit zu
korrigieren, dass alle Warnings wieder verschwinden.
Viele Warnings sind zwar harmlos, aber nicht alle.
Und die gehen dann in der Flut der harmlosen Warnings
unter.
Gast #474038
Jede Warnung ist solange gefährlich, bis man genau verstanden hat, warum 
sie auftritt, (und sie als ungefährlich einstufen kann). Nur kann (und 
sollte) man dann auch gleich den Code so ändern, daß sie nicht mehr 
auftritt :-)

Oliver
#1536168
Ich klinke mich bei dem Thread mal ein weil es so schön dazu passt. Ich 
bekomme auch die signedness Fehlermeldung, weiss aber nicht, wie ich sie 
beheben soll:

in der main.c führe ich folgenden Befehl aus, der eine Funktion in 
Stephan Buskers FAT16 Library aufruft:

fopen_("file0001.txt",'a');

die Lib sieht so aus:

extern File *  fopen_(s8 *fname,s8 mode);

Es sird also eine signed Zeichenfolge erwartet. Wie kann ich ihm dieses 
festlegen?

mit fopen_(signed char test = "file0001.txt",'a');

funktioniert es auch nicht.
Gast #1536187
> fopen_("file0001.txt",'a');
>
> die Lib sieht so aus:
>
> extern File *  fopen_(s8 *fname,s8 mode);

Dann ist diese Funktion falsch deklariert. Der erste Parameter müßte 
eigentlich vom Typ const char* sein. Dann käme auch keine Warnung.

> Es sird also eine signed Zeichenfolge erwartet.

Genau das ist das Problem. Wenn man mit Strings arbeitet, sollte es 
vollkommen egal sein, ob der für Zeichen verwendete Typ nun ein 
Vorzeichen hat oder nicht.

> Wie kann ich ihm dieses festlegen?

Du wirst wohl einen cast bemühen müssen:

fopen_((s8*)"file0001.txt",'a');

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 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.