#c #function #types #syntax #function-pointers
#c #функция #типы #синтаксис #указатели на функции
Вопрос:
int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx)
Я нахожу этот фрагмент кода, не уверен, как его понять. Я думаю, что EVP_MD_meth_get_cleanup — это имя типа указателя функции, возвращающее значение int, но не понимающее часть аргумента.
Ответ №1:
EVP_MD_meth_get_cleanup
это функция, которая принимает const EVP_MD *md
в качестве аргумента и возвращает указатель на функцию. Этот указатель на функцию принимает EVP_MD_CTX *ctx
и возвращает int
.
Нет ничего лучше, чем пример:
int somefunction(EVP_MD_CTX *ctx) {
stuff();
}
int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx) {
return somefunction;
}
Комментарии:
1. Компилируется нормально godbolt.org/z/a1ajdK5b9