Forum: Compiler & IDEs Viele Warnungen beim Kompilieren


von Udo (Gast)


Lesenswert?

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?

von fieser, klugscheissender Rahul (Gast)


Lesenswert?

>'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.

von Karl heinz B. (kbucheg)


Lesenswert?

> 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.

von OliverSo (Gast)


Lesenswert?

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

von I. E. (anfaenger69)


Lesenswert?

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.

von Rolf Magnus (Gast)


Lesenswert?

> 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');

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Igor Ebner schrieb:
> Ich klinke mich bei dem Thread mal ein weil es so schön dazu passt.

Nein, dafür macht man einen neuen Thread auf, statt eine alte Leiche
aus dem Keller zu holen.

von I. E. (anfaenger69)


Lesenswert?

Ja, Rolf, so klappt es.

OK, Jörg, wird beherzigt.

Danke Euch beiden.


p.s. Von Assembler auf C umzusteigen macht riesig Spaß :c)

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.