Как вы передаете функцию в качестве параметра в C?

На этот вопрос уже есть ответ pointers для определения указателей functions функций, однако они могут parameters быть очень запутанными, особенно functions если вы собираетесь передавать def их по всему приложению. Чтобы ptr избежать этой неприятности, я parameter бы порекомендовал вам преобразовать c указатель функции в нечто parameter более читабельное. Например.

typedef void (*functiontype)();

Объявляет def функцию, которая возвращает parameter void и не принимает аргументов. Чтобы params создать указатель на функцию functions этого типа, вы можете сделать ptr следующее:

void dosomething() { }

functiontype func = &dosomething;
func();

Для функции, которая c возвращает int и принимает def char, вы бы сделали

typedef int (*functiontype2)(char);

и использовать param его

int dosomethingwithchar(char a) { return 1; }

functiontype2 func2 = &dosomethingwithchar
int result = func2('a');

Существуют библиотеки, которые params могут помочь превратить указатели function функций в удобные для чтения syntax типы. Библиотека boost function великолепна syntax и стоит затраченных усилий!

boost::function functiontype2;

намного def приятнее, чем выше.

c

function

pointers

syntax

parameters

2022-11-09T09:59:07+00:00
Вопросы с похожей тематикой, как у вопроса:

Как вы передаете функцию в качестве параметра в C?