Problema compilando ejemplo de K&R

Tengo problemas para compilar el programa de ejemplo presentado en la sección 5.11 del libro. Eliminé la mayor parte del código y dejé solo las cosas relevantes.

#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) {
    /* ... */
}

El problema es que el código no se compila (estoy usando el compilador Digital Mars). El error que obtengo es 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

Debe haber algo mal con las declaraciones, aunque pegué el código del libro correctamente. No sé lo suficiente como para hacer los cambios correctos (la sección sobre los punteros de función ciertamente podría haberse escrito más extensamente).

EDIT: debería haber mencionado que estoy leyendo la versión ANSI del libro.

Respuestas a la pregunta(5)

Su respuesta a la pregunta