是否已弃用uv_prepare_init
?
在uv.h
中有一个函数定义,但我无处可找到C文件中的函数体。但是,在文档中,没有关键字,因为已弃用。
有替换uv_prepare_init
的解决方案吗?
在轮询I / O之前,我需要这个句柄来执行。
答案 0 :(得分:1)
uv_prepare_init
并未弃用
有关详细信息,请参阅文件loop-watcher.c
。它可用于unix(libuv/src/unix
)和windows(libuv/src/win
)。
那么,什么是魔术呢?
怎么没有定义,但函数是库的一部分?
宏。这就是全部。即使有点混淆,也有定义。
存在一个名为UV_LOOP_WATCHER_DEFINE
的宏,其中一部分如下:
#define UV_LOOP_WATCHER_DEFINE(name, type) \
int uv_##name##_init(uv_loop_t* loop, uv_##name##_t* handle) { \
uv__handle_init(loop, (uv_handle_t*)handle, UV_##type); \
handle->name##_cb = NULL; \
return 0; \
} \
// ... continue ...
在定义之后,the macro is used立即为:
UV_LOOP_WATCHER_DEFINE(prepare, PREPARE)
您可以轻松地替换自己,并发现它实际上是在定义uv_prepare_init
。
因此,我们可以说该功能是库的一部分,它不被弃用(至少在v1.x
中)并且您可以自由地将其用于您的目的。
无需以任何方式替换。