在C中使用函数指针的Typedef?

Dan*_*ngo 2 c typedef function-pointers

我是C的新手,我很难阅读这行代码并理解它:

typedef void (*getnxtbyte_t)(void *stream);
Run Code Online (Sandbox Code Playgroud)

从环顾四周,我现在知道它是指向一个函数的指针.但任何人都可以帮助我进一步澄清这一点吗?这种新型号的名称是什么?它指向什么功能?是函数的参数(void* stream)吗?

提前致谢!

Dre*_*ann 5

这是一个习惯的棘手语法.

这种新型号的名称是什么?

类型是getnxtbyte_t.(您可以将其描述_t为"类型".这是一个受欢迎的惯例.)

类型的变量getnxtbyte_t可以保存带有一个void *参数并具有返回类型的函数的地址void.

它指向什么功能?

错误的问题.

该代码仅定义了类型.没有变量被创建,所以没有"它"指向任何东西.

如果您知道具有正确签名的函数,例如:

void some_func(void*) {}
Run Code Online (Sandbox Code Playgroud)

您现在可以使用该typedef创建指向它的指针:

getnxtbyte_t my_function_pointer = some_func;
Run Code Online (Sandbox Code Playgroud)