tengo un problema con scandir(): La página de manual contiene esto como prototipo:scandir Página de manual() prototipo rareza
int scandir(const char *dir, struct dirent ***namelist,
int (*filter)(const struct dirent *),
int (*compar)(const struct dirent **, const struct dirent **));
Por lo tanto tengo esto:
static inline int
RubyCompare(const struct dirent **a,
const struct dirent **b)
{
return(strcmp((*a)->d_name, (*b)->d_name));
}
Y aquí está la llamada :
num = scandir(buf, &entries, NULL, RubyCompare);
Finalmente el compilador dice esto:
warning: passing argument 4 of ‘scandir’ from incompatible pointer type
Compiler es gcc-4.3.2, mis CFLAGS son los siguientes:
-Wall -Wpointer-arith -Wstrict-prototypes -Wunused -Wshadow -std=gnu99
¿Cuál es el significado de esta advertencia? La declaración de RubyCompare me parece correcta y, además de la advertencia, el código funciona por completo.
Pues bien, me escribió mi propia versión debido a que la la página de manual fue engañosa con la portabilidad de alphasort() también. Con alphasort() funciona, es divertido que nunca lo haya intentado. ;) – unexist
Hacer esto me da una advertencia porque descarta el calificador const de los argumentos de vacío. ¿Hay alguna forma de evitar esto? – TartanLlama
@TartanLiama: No sé cómo está recibiendo esa advertencia, no puedo reproducirla. No está modificando * a o * b. – Chris