【发布时间】:2011-10-18 07:32:06
【问题描述】:
非常简单的问题,在哪里这段代码在哪里工作?
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 代码。
注意:这段代码 sn-p 取自 JSON parser on github,据我了解,它创建了用于处理 JSON 字符串的跳转表。
【问题讨论】:
-
我相信这是使用 gcc 扩展。
标签: c arrays initialization