Очень простой вопрос , где работает этот код?
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.