Что означает последний аргумент функции на языке Си? Пожалуйста, укажите на документацию, где я могу прочитать об этом.
void parse_options( int argc, char **argv, const OptionDef *options, void (* parse_arg_function)(const char*) )
Спасибо.
Это указатель на функцию , которая принимает const char* и возвращает void.
const char*
void
Для получения дополнительной информации см. здесь .
Это указатель на функцию.Функция называется parse_arg_function, она принимает аргумент const char* и возвращает void.
parse_arg_function
В случае, как вы показали, указатель функции по существу используется в качестве обратного вызова.Внутри этой функции ее можно использовать в соответствии с
// ... for (int i = 0; i < argc; i++) { parse_arg_function(argv[i]); } // ...
Возможно, вы захотите прочитать это руководство по указателю на функцию для более подробного обсуждения.
Это функция из библиотеки ffmpeg . Цитата из онлайн документации о ffmpeg:
parse_arg_function Имя функции, вызываемой для обработки каждого аргумента без флага имени ведущего параметра. NULL, если такие аргументы не нужно обрабатывать.
Другими словами: если вы хотите выполнить некоторую обработку самостоятельно для каждого аргумента, вы можете задать свою собственную функцию. В противном случае просто используйте NULL.
NULL
Если вы сомневаетесь в том, что означает объявление в C, вы можете спросить cdecl :
объявить parse_arg_function как указатель на функцию (указатель на const char), возвращая void
Это - хорошее введение в указатели функций.Думайте о них как об адресе кода, относящегося к функции в памяти.