static uint8_t togglecode[256] = {
    [0x3A] CAPSLOCK,
    [0x45] NUMLOCK,
    [0x46] SCROLLLOCK
};

这里[0x3A]是什么意思?我只学过像int a[2] = {1, 2};这样的语句

推荐答案

这意味着初始化数组的第n个元素.你给出的例子意味着:

togglecode[0x3A] == CAPSLOCK
togglecode[0x45] == NUMLOCK
togglecode[0x46] == SCROLLLOCK

它们被称为"designated initializers",实际上是C99标准的一部分.但是,没有=的语法是不正确的.从那一页:

另一种语法是在元素值之前写[index],而不是=,这种语法自GCC 2.5以来就已经过时,但GCC仍然接受.

C++相关问答推荐

ARM上的Modulo Sim Aarch 64(NEON)

Mbed TLS:OAEP的就地en—/decryption似乎不起作用'

C:scanf(%d&q;,...)输入只有一个减号

当多个线程在C中写入相同的文件描述符时,如何防止争用情况?

Ruby C Api处理异常

关于";*(++p)->;t";、&++p->;t";和&q;++*p->;t";的问题

S在本文中的价值观到底出了什么问题?

Printf()在C中打印终止字符之后的字符,我该如何解决这个问题?

通过k&;r语法的c声明无效

不使用任何预定义的C函数进行逐位运算

从CentOS 7到Raspberry PI 2B的交叉编译-无法让LIBC和System Include标头一起工作

C++中PUTS函数的返回值

GETS()在C++中重复它前面的行

如何在C中处理流水线中的a、n命令?

Makefile无法将代码刷新到ATmega328p

C: NULL>;NULL总是false?

关于不同C编译器中的__attribute__支持

为什么 int32_t 和 int16_t 在 printf 输出中具有相同的位数?

如何为avr atmega32微控制器构建C代码,通过光电二极管捕获光强度并通过串行通信传输数据

如何正确探测平台设备?