Я наткнулся на эту строку:
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.