[英]Is this syntax - [x] = ‘y’ in an array literal - standard C?
const char Table[256] = {
['a'] = 'a', ['A'] = 'a',
['b'] = 'b', ['B'] = 'b',
['c'] = 'c', ['C'] = 'c',
['d'] = 'd', ['D'] = 'd',
['e'] = 'e', ['E'] = 'e',
['f'] = 'f', ['f'] = 'f',
['g'] = 'g', ['g'] = 'g',
['h'] = 'h', ['H'] = 'h',
['i'] = 'i', ['I'] = 'i',
['j'] = 'j', ['J'] = 'j',
/* Etc */
};
我在 C 问题的回答中看到了类似的内容。 这是类似 Lua 的语法标准 C,还是一些编译器扩展?
是的,自 C99 以来,该语法是标准的(1999 ISO C 标准)。
在 C 标准中有描述: https://port70.net/~nsz/c/c11/n1570.html#6.7.9
(该链接指向 N1570 草案的 HTML 版本,与 2011 年发布的版本非常接近。)
指定的初始化器也可用于结构和联合成员,语法为.name = value
而不是[index] = value
。
指定的初始值设定项也可用于复合文字: https://port70.net/~nsz/c/c11/n1570.html#6.5.2.5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.