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 tipovoid *
. 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
?