[英]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.