Desde la línea 123 de sys.c :
void *sys_call_table[__NR_syscalls] =
{
[0 ... __NR_syscalls-1] = sys_ni_syscall,
#include <asm/unistd.h>
};
sys_call_table
es un puntero genérico a matrices, puedo ver eso. Sin embargo, cuál es la notación:
[0 ... __NR_syscalls-1]
¿Qué es el ...
?
EDITAR:
Aprendí otro truco de C aquí: #include <asm/unistd.h>
será preprocesado y reemplazado con su contenido y asignado a [0 ... _NR_syscalls-1]
.
void (*sys_call_table)[__NR_syscalls]
char *argv[]
. Fijo.Respuestas:
Es la inicialización mediante inicializadores designados .
La inicialización basada en rango es una extensión gnu gcc.
No es portátil. Compilar con
-pedantic
te lo digo.¿Cómo funciona aquí?
El preprocesador reemplaza
#include <asm/unistd.h>
con su contenido real ( define diversas constantes y tipos simbólicos, y declara diversas funciones ) en la construcción basada en rango, que luego se utiliza para inicializar la matriz de punteros.fuente