bod*_*ser 3 c typedef type-conversion
我已经通过类型转换获得了一些知识.它们用于将变量后面的字节重新解释为另一种类型.例:
unsigned char* byte = (unsigned char*) (some signed char);
Run Code Online (Sandbox Code Playgroud)
但现在我看到以下声明:
typedef void (*uv_read_cb)(uv_stream_t* stream, ssize_t nread, uv_buf_t buf);
Run Code Online (Sandbox Code Playgroud)
https://github.com/bodokaiser/libuv/blob/master/include/uv.h#L314
让我困惑的是:
有人对这些问题有答案吗?
typedef确实有一个名称... uv_read_cb这是一个指向接受a uv_stream_t*,a ssize_t和a uv_buf_t参数并返回的函数的指针void.
这允许您添加诸如指向结构中的函数的指针,将函数指针传递给函数等,同时允许您定义可以为变量分配的函数类型或传递...
typedef void (*uv_read_cb)(uv_stream_t* stream, ssize_t nread, uv_buf_t buf);
struct myVTable
{
uv_read_cb uv_read_callback;
};
void myVFunction( uv_stream_t* stream, uv_read_db callback )
{
ssize_t length = 100;
uv_buf_t buf;
myVTable table;
table.uv_read_callback = callback;
table.uv_read_callback( stream, length, buf );
// or you could alternatively use 'callback( stream, length, buf );'
}
Run Code Online (Sandbox Code Playgroud)