#define 中的方括号

Square brackets in #define

我正在查看 Linux 内核代码并找到下面一行。方括号是什么意思?

#define __BPF_FUNC_STR_FN(x) [BPF_FUNC_ ## x] = __stringify(bpf_ ## x)

发件人:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/bpf/disasm.c#n18

它的用法是这样的:

static const char * const func_id_str[] = {
    __BPF_FUNC_MAPPER(__BPF_FUNC_STR_FN)
};

在 c99 中,引入了指定初始化器的语法。方括号语法用于数组初始化。所以行:

int a[] = { [10] = 4 };

会创建一个数组a,可以容纳11ints,并初始化a[10]为4,其余成员初始化为0。