Что означает аргумент функции void (* parse_arg_function) (const char *) "в C? - PullRequest
1 голос
/ 04 апреля 2010

Что означает последний аргумент функции на языке Си? Пожалуйста, укажите на документацию, где я могу прочитать об этом.

void parse_options( int argc, char **argv, const OptionDef *options, 
                   void (* parse_arg_function)(const char*) )

Спасибо.

Ответы [ 5 ]

6 голосов
/ 04 апреля 2010

Это указатель на функцию , которая принимает const char* и возвращает void.

Для получения дополнительной информации см. здесь .

3 голосов
/ 04 апреля 2010

Это указатель на функцию.Функция называется parse_arg_function, она принимает аргумент const char* и возвращает void.

В случае, как вы показали, указатель функции по существу используется в качестве обратного вызова.Внутри этой функции ее можно использовать в соответствии с

// ...
for (int i = 0; i < argc; i++)
{
    parse_arg_function(argv[i]);
}
// ...

Возможно, вы захотите прочитать это руководство по указателю на функцию для более подробного обсуждения.

1 голос
/ 04 апреля 2010

Это функция из библиотеки ffmpeg . Цитата из онлайн документации о ffmpeg:

parse_arg_function Имя функции, вызываемой для обработки каждого аргумента без флага имени ведущего параметра. NULL, если такие аргументы не нужно обрабатывать.

Другими словами: если вы хотите выполнить некоторую обработку самостоятельно для каждого аргумента, вы можете задать свою собственную функцию. В противном случае просто используйте NULL.

1 голос
/ 04 апреля 2010

Если вы сомневаетесь в том, что означает объявление в C, вы можете спросить cdecl :

объявить parse_arg_function как указатель на функцию (указатель на const char), возвращая void

1 голос
/ 04 апреля 2010

Это - хорошее введение в указатели функций.Думайте о них как об адресе кода, относящегося к функции в памяти.

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