#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
,可以容纳11int
s,并初始化a[10]
为4,其余成员初始化为0。
我正在查看 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
,可以容纳11int
s,并初始化a[10]
为4,其余成员初始化为0。