Я наткнулся на эту строку:
void (*(*x)(void (*[10])(int *)))(int *)
Кто-нибудь может сказать мне, что это такое?
Я наткнулся на эту строку:
void (*(*x)(void (*[10])(int *)))(int *)
Кто-нибудь может сказать мне, что это такое?
Чтобы разбить это на себя, начинайте с самых внутренних круглых скобок и выполняйте свой путь.
(*[10])
< ---- Массив из 10 указателей(*[10])(int *)
< ------ Массив из 10 указателей на функции, которые имеют указатель на int
в качестве аргумента(void (*[10])(int *))
< ------ Массив из 10 указателей на функции, который имеет указатель на int
в качестве своего аргумента и возвращает void
(*x)(void (*[10])(int *))
< ------- x
является указателем на функцию, которая имеет в качестве аргумента (массив из 10 указателей на функции, который имеет указатель на int в качестве аргумента и возвращает void
).....
Я остановился частично, но надеюсь, что это поможет.
cdecl очень полезен для такого рода вещей. В нем говорится:
объявить x как указатель на функцию (массив 10 указателя на функцию (указатель на int), возвращающий void), возвращающий указатель на функцию (указатель на int), возвращающий void
Здесь вы можете найти объяснения:
Указатель на функцию, которая имеет массив из 10 указателей на функции который имеет аргумент int * и возвращаемый тип void как аргумент, и возвращает указатель на функцию, которая имеет аргумент int * и return type void.