Очень простой вопрос , где работает этот код?
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
['t'] = &&l_bare, ['f'] = &&l_bare, ['n'] = &&l_bare // true, false, null
};
Прочитав его, ясно, что он инициализирует массив, содержащий 256 записей, для значения && l_bad и затем переопределяетопределенные индексы с конкретными значениями.Но этот код не компилируется в VS2010, к которому у меня есть доступ, поэтому мне интересно, где это допустимый код C.
ПРИМЕЧАНИЕ. Этот фрагмент кода был взят из анализатора JSON на github что, насколько я понимаю, создает таблицы переходов для обработки строк JSON.