Какова сигнатура функции, которая берет указатель на функцию и возвращает указатель на функцию? - PullRequest
1 голос
/ 24 мая 2011


Я хотел бы знать, что является сигнатурой функции, которая принимает указатель на функцию и возвращает указатель на функцию?

Спасибо,
Сен

Ответы [ 3 ]

5 голосов
/ 24 мая 2011

Например:

void (*f(void (*)(void)))(void)

... что гораздо удобнее при использовании typedefs:

typedef void (*VoidFunctionPointer)(void);
VoidFunctionPointer f(VoidFunctionPointer);
1 голос
/ 24 мая 2011

Самый простой способ сделать это с помощью typedef:

typedef int(*int_fn_ptr)(int);

int_fn_ptr my_func(int_fn_ptr f);

Отказ от ответственности : Я не могу подтвердить, что здесь нет опечаток.

0 голосов
/ 24 мая 2011

Вам нужно лучше определить указатель функции , взятый в качестве параметра и тип возвращаемого значения.
В любом случае, вот пример с простой функцией.

#include <stdio.h>
#include <stdlib.h> /* abs */

typedef int fx(int);

/* foo takes a function pointer and returns a function pointer */
fx *foo(fx *bar) {
  if (bar) return bar;
  return NULL;
}

int main(void) {
  fx *(*signature)(fx *) = foo;        /* signature points to foo */
  if (signature(abs)) printf("ok\n");
  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...