source portable para opencobol open c gcc-extensions

portable - opencobol para windows



¿Qué es esta sintaxis “[0… 255]=” en C? (1)

... es una extensión proporcionada por GCC

https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html#Designated-Inits

Para inicializar un rango de elementos con el mismo valor, escriba [first ... last] = value . Esta es una extensión de GNU. Por ejemplo,

int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };

&& es otra extensión

https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html#Labels-as-Values

Puede obtener la dirección de una etiqueta definida en la función actual (o una función que lo contiene) con el operador unario && . El valor tiene tipo void * . Este valor es una constante y puede usarse siempre que una constante de ese tipo sea válida. Por ejemplo:

void *ptr; /* ... */ ptr = &&foo;

Refiriéndose a js0n.c

La sintaxis del código es la siguiente:

static void *gostruct[] = { [0 ... 255] = &&l_bad, [''/t''] = &&l_loop, ['' ''] = &&l_loop, [''/r''] = &&l_loop, [''/n''] = &&l_loop, [''"''] = &&l_qup, ['':''] = &&l_loop, ['',''] = &&l_loop, [''[''] = &&l_up, ['']''] = &&l_down, // tracking [] and {} individually would allow fuller validation but is really messy [''{''] = &&l_up, [''}''] = &&l_down, [''-''] = &&l_bare, [48 ... 57] = &&l_bare, // 0-9 [65 ... 90] = &&l_bare, // A-Z [97 ... 122] = &&l_bare // a-z }; ........ ....... l_bad: *vlen = cur - json; // where error''d return 0; ........ ........

¿Alguien puede explicar lo que se está haciendo aquí? ¿Qué hacen aquí la sintaxis [0 ... 255] y &&l_bad ?