Да, это вызов функции.
Он преобразует значение в addr
в указатель функции, который принимает (bd_t *, int, char *[])
в качестве аргументов, возвращает ulong
и вызывает функцию. Это может быть засахарено в:
typedef ulong (*bd_function)(bd_t *bd, int argc, char *argv[]);
bd_function bdfunc = (bd_function) addr;
rc = bdfunc(bd, --argc, &argv[1]);
Это может быть излишним, вводить typedef
, если это происходит только один раз, но я чувствую, что это очень помогает иметь возможность взглянуть на тип указателя функции отдельно.