Инициализация диапазона массива C

Очень простой вопрос , где работает этот код?

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.

5
задан James 18 October 2011 в 07:32
поделиться