Eventuali duplicati:
Problem compiling K&R examplePointer avvertimento tipo non corrispondente nell'esempio da K & R C
Ultimamente ho lavorato la mia strada attraverso il linguaggio di programmazione C da K & R.
Nella sezione 5.11 sono riportati i puntatori alle funzioni e dopo aver digitato il loro esempio: un'implementazione quicksort in cui forniamo un puntatore al compari funzione figlio che vogliamo usare - Ricevo un avvertimento dal compilatore: mancata corrispondenza del tipo di puntatore nell'espressione condizionale. (Il mio compilatore è 4.0.1 gcc su OS X 10.5.6)
La linea dall'esempio che fa scattare l'avviso è:
qsort((void **) lineptr, 0, nlines-1,
(int (*)(void*, void*))(numeric ? numcmp : strcmp));
Il programma esegue senza va in segfault, ma mi piace smoosh ogni avviso Posso, o almeno capire le loro cause.
La dichiarazione di funzione per numcmp assomiglia:
int numcmp(char *, char *);
Ma secondo la pagina di manuale, stcmp ha questa firma:
int strcmp(const char *s1, const char *s2);
è il monito semplice a causa delle leggermente diverse firme dei metodi? Quali sono le conseguenze dell'ignorare l'avvertimento?
Eddie indicò un dupe. Ho votato per chiudere la mia domanda, ma ho pensato che ci sarebbe stato un modo in cui il proprietario poteva chiuderla sommariamente. – Dana
Dana, check out [Esempio di compilazione di problemi K & R] (http://stackoverflow.com/questions/616906/problem-compiling-kr-example/616929) e probabilmente troverai la risposta alla tua domanda lì. Facci sapere se non lo fai. – Eddie