Problem compilando exemplo de K&R
Estou tendo problemas para compilar o programa de exemplo apresentado na seção 5.11 do livro. Eu removi a maior parte do código e deixei apenas o material relevante.
#define MAXLINES 5000
char *lineptr[MAXLINES];
void qsort1(void *lineptr[], int left, int right, int (*comp)(void *, void *));
int numcmp(char *, char *);
main(int argc, char *argv[]) {
int numeric = 1;
/* ... */
qsort1((void**) lineptr, 0, 100, (int (*)(void*, void*))(numeric ? numcmp : strcmp));
}
void qsort1(void *v[], int left, int right, int (*comp)(void *, void *)) {
/* ... */
}
int numcmp(char *s1, char *s2) {
/* ... */
}
O problema é que o código não é compilado (estou usando o compilador Digital Mars). O erro que recebo é este:
qsort1((void**) lineptr, 0, nlines - 1, (int (*)(void*, void*))(numeric
? numcmp : strcmp));
^
go.c(19) : Error: need explicit cast to convert
from: int (*C func)(char const *,char const *)
to : int (*C func)(char *,char *)
--- errorlevel 1
Deve haver algo errado com as declarações, embora eu colei o código do livro corretamente. Não sei o suficiente para fazer as alterações corretas (a seção sobre os ponteiros de função certamente poderia ter sido escrita mais amplamente
EDIT: Eu deveria ter mencionado que estou lendo a versão ANSI do livr