Как правило, мы используем typedef для получения альтернативных имен для типов данных.
Например -
typedef long int li; // li can be used now in place of long int
Но что делает ниже typedef?
typedef int (*pf) (int, int);
Как правило, мы используем typedef для получения альтернативных имен для типов данных.
Например -
typedef long int li; // li can be used now in place of long int
Но что делает ниже typedef?
typedef int (*pf) (int, int);
typedef int (*pf) (int, int);
Это означает, что переменные, объявленные с типом pf, являются указателями на функцию, которая принимает два параметра int и возвращает int.
Другими словами, вы можете сделать что-то вроде этого:
#include <stdio.h>
typedef int (*pf)(int,int);
int addUp (int a, int b) { return a + b; }
int main(void) {
pf xyzzy = addUp;
printf ("%d\n", xyzzy (19, 23));
return 0;
}
typedef long int li;
назначает альтернативное имя li для ввода long int.
Точно так же
typedef int (*pf) (int, int);
назначает альтернативное имя pf для ввода int (*) (int, int). Это все, что нужно.
Как вы, вероятно, заметили, объявления typedef следуют тому же синтаксису, что, скажем, объявления переменных. Единственное отличие состоит в том, что новое имя переменной заменяется новым именем типа. Таким образом, в соответствии с синтаксисом объявления C, объявленное имя может появляться "посередине" объявления, когда задействуются массив или типы функций.
В другом примере
typedef int A[10];
объявляет A в качестве альтернативного имени для типа int [10]. В этом примере новое имя также появляется "в середине" объявления.
Это прототип указателя функции. Затем вы можете объявить функцию как аргумент примерно так:
void RegisterCallback(pf your_callback_func);
Затем вы можете вызвать функцию, переданную как func ptr:
...
your_callback_func(i, j);
...
typedef имеет имя pf, и он предназначен для указателя функции, который принимает два целых числа в качестве аргументов и возвращает целое число.
typedef работает как:
Определите unknown type с помощью known types.
Таким образом, он определяет тип функции, который принимает два аргумента int и возвращает int.