“void(* parse_arg_function)(const char *)”函数参数在C中的含义是什么?

时间:2010-04-04 15:25:53

标签: c

最后一个函数参数在C语言中意味着什么? 请指出我可以阅读的文档。

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

感谢。

5 个答案:

答案 0 :(得分:6)

这是一个pointer to a function,需要const char*并返回void

有关详细信息,请参阅here

答案 1 :(得分:3)

这是一个函数指针。该函数名为parse_arg_function,它接受​​const char*参数,并返回void

在您显示的情况下,函数指针实际上被用作回调。在该函数内部,它可以按照

的方式使用
// ...
for (int i = 0; i < argc; i++)
{
    parse_arg_function(argv[i]);
}
// ...

您可能希望阅读this function pointer tutorial以进行更深入的讨论。

答案 2 :(得分:1)

This是对函数指针的一个很好的介绍。将它们视为与内存中的函数有关的代码的地址。

答案 3 :(得分:1)

如果对C中的声明含义有疑问,可以ask cdecl

  

将parse_arg_function声明为函数指针(指向const char的指针)返回void

答案 4 :(得分:1)

这是来自ffmpeg库的函数。引自online documentation关于ffmpeg:

  

parse_arg_function 调用的函数的名称,用于处理没有前导选项名称标志的每个参数。如果不必处理这些参数,则为NULL。

换句话说:当你想为每个参数自己做一些处理时,你可以给自己的功能。否则,只需使用NULL