PDA

View Full Version : [C] Strani (per me) warning


DanieleC88
28-11-2004, 11:22
Nel compilare un file C con GCC ottengo questi due warning:cmdline.c:21: warning: comparison between pointer and integer
cmdline.c:22: warning: comparison between pointer and intege
Per queste due linee di codice: printf("->\t(strstr(\"ciao!\", \"2>&1\") == NULL) = %d\n", (strstr("ciao!", "2>&1") == NULL));
printf("->\t(strstr(\"ciao!2>&1\", \"2>&1\") == NULL) = %d\n", (strstr("ciao!2>&1", "2>&1") == NULL));

Credo che si riferisca al strstr("...","...") == NULL. Non vedo pero' perche' NULL sia inteso come integer. Non e' un "(void *) 0"?

ilsensine
28-11-2004, 16:39
Sul mio compilatore non genera quel warning.
Potrebbe generarlo se hai scordato di includere string.h.

DanieleC88
28-11-2004, 16:51
Originariamente inviato da ilsensine
Potrebbe generarlo se hai scordato di includere string.h.

:doh: E' vero... ora compila senza warning...
Non ci avevo nemmeno pensato, credevo che nel caso avessi mancato di includerlo mi avrebbe avvisato che non erano dichiarati i prototipi...

Grazie dell'aiuto!

ilsensine
29-11-2004, 07:53
Originariamente inviato da DanieleC88
credevo che nel caso avessi mancato di includerlo mi avrebbe avvisato che non erano dichiarati i prototipi...

Sì, se compili con -Wall ;)

Altrimenti, ogni dichiarazione implicita si assume "int foo(...);"

DanieleC88
30-11-2004, 20:59
Ah, ecco... mi ero troppo abituato al mio kernel (lì -Wall è abilitato, ma il programma per cui avevo chiesto aiuto lo compilo da Anjuta, quindi usando automake/autoconf, e non avevo esplorato i Makefiles, dove non era abilitata tale opzione)!