Квадратные скобки в #define - PullRequest
       8

Квадратные скобки в #define

0 голосов
/ 05 декабря 2018

Я просматривал код ядра 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)
};

1 Ответ

0 голосов
/ 05 декабря 2018

В c99 был введен синтаксис для обозначенных инициализаторов.Синтаксис в квадратных скобках предназначен для инициализации массива.Таким образом, строка:

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

создаст массив a, который может содержать 11 int с, и инициализирует a[10] в 4, а остальные его члены инициализируются в 0.

...