Da linha 123 sys.c :
void *sys_call_table[__NR_syscalls] =
{
[0 ... __NR_syscalls-1] = sys_ni_syscall,
#include <asm/unistd.h>
};
sys_call_table
é um ponteiro genérico para matrizes, posso ver isso. No entanto, qual é a notação:
[0 ... __NR_syscalls-1]
O que é ...
?
EDIT:
eu aprendi outro truque C aqui: #include <asm/unistd.h>
será pré - processado e substituído com seu conteúdo e atribuído a [0 ... _NR_syscalls-1]
.
void (*sys_call_table)[__NR_syscalls]
char *argv[]
. Fixo.Respostas:
É a inicialização usando inicializadores designados .
A inicialização baseada em intervalo é uma extensão gnu gcc.
Não é portátil. Compilar com
-pedantic
te digo isso.Como funciona aqui?
O pré-processador substitui
#include <asm/unistd.h>
com seu conteúdo real ( ele define diversos tipos e constantes simbólicas e declara funções diversas ) na construção baseada em intervalo, que é então usada posteriormente para inicializar a matriz de ponteiros.fonte