gLongOption
- это массив структур.C позволяет инициализировать массив следующим образом:
int array[] = {1, 2, 3}:
Далее, на последних диалектах C вы можете даже позже изменить содержимое массива на:
int array = {0};
...
array = (int[]) {1, 2, 3};
Аналогично, вы можетеинициализировать структуры следующим образом:
struct my_struct_t {
int i;
char c;
};
struct my_struct_t m = {1, 'a'};
gLongOption
теперь является массивом структур, поэтому
static struct option gLongOption[] =
{
{"port", arg, NULL, 'p'}, // initialize gLongOption[0] as a struct of type struct option
{"maxqueue", arg, NULL, 'q'}, // initialize gLongOption[1]
{"help", non_arg, NULL, 'h'}, // etc.
{NULL, 0, NULL, 0}
};
инициализирует массив, элементы которого оказываются структурами, таким образом, элементы инициализируютсякак структуры.
Просто для полноты можно также использовать имена элементов структуры, чтобы присвоить всей структуре новое значение, например
m = (struct my_struct_t){
.i = 2, // note the dot. The comma could be ommitted
};
Все элементы, которыене инициализируются явно, затем инициализируются нулями, таким образом, m.c == '\0'
после присвоения выше.