static void (*handler[LASTEvent])(XEvent *) = {
[KeyPress] = kpress,
[ClientMessage] = cmessage,
/* Removed some lines for brevity ... */
};
Run Code Online (Sandbox Code Playgroud)
我从未在C中看到过这种语法,我甚至不确定谷歌的用途.我粗略地了解它的作用(将处理程序定义为函数指针数组),但我想更好地理解这种语法.它似乎至少在C99中是有效的,但我正在寻找更多细节,为什么这是正确的,它是如何工作的,也许是指向定义这种语法的C标准的指针.
jay*_*ant 13
这是用枚举索引初始化一个函数指针数组.看到这里.
如下面的评论中所述,使用指定的初始化程序.
这个简短的例子应该说明如何使用它.
enum indexes {ZERO, ONE, TWO, FOUR=4};
int array[5] = {[FOUR]=1, [TWO]=9};
for(int i = 0; i < 5; i++)
printf("%d, ", array[i]);
Run Code Online (Sandbox Code Playgroud)
打印出来
0, 0, 9, 0, 1,
Run Code Online (Sandbox Code Playgroud)