C'est une caractéristique de la norme ISO C99 connu comme désigné initialiseurs. Il crée un tableau et initialise les éléments spécifiques de ce tableau, pas nécessairement le premier N dans l'ordre. C'est l'équivalent de l'extrait de code suivant:
static __initdata int (*actions[SOME_SIZE])(void);
actions[Start] = do_start;
actions[Collect] = do_collect;
actions[GotHeader] = do_header;
actions[SkipIt] = do_skip;
actions[GotName] = do_name;
actions[CopyFile] = do_copy;
actions[GotSymlink] = do_symlink;
actions[Reset] = do_reset;
Sauf que le tableau ne sera aussi grand qu'il doit (de taille égale à un de plus que le plus grand index), et il peut être initialisé de manière statique à la portée globale -- vous ne pouvez pas exécuter le code ci-dessus à la portée globale.
Ce n'est pas une caractéristique de la norme ANSI C89, mais GCC fournit cette fonctionnalité comme une extension, même lors de la compilation de code C89.