запрос указателей функций - PullRequest
0 голосов
/ 18 декабря 2009

В чем разница между этими двумя ниже:

typedef void (*my_destructor)(void *);

typedef void (*my_destructor)(void *)  my_func_ptr;

допустимо ли второе?

Ответы [ 2 ]

7 голосов
/ 18 декабря 2009

Первый объявляет тип с именем my_destructor. Этот тип является указателем на функцию, принимающую параметр типа void* и ничего не возвращающую.

Второй недействителен, что вы пытаетесь сделать? Если вы хотите объявить переменную типа my_destructor, вы должны сделать это:

typedef void (*my_destructor)(void *);
my_destructor my_func_ptr;
1 голос
/ 18 декабря 2009

Вы объявляете тип для функции указателя. Первый - хороший, это означает, что у вас есть тип с именем my_destructor, который является указателем на функцию (*my_destructor), которая принимает пустой аргумент (void *) на аргументы и ничего не возвращает (void).

Теперь вы можете использовать свой тип, как если бы он был другим типом, например, char, long или любым другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...