2017-06-26 16 views
1

是否已弃用uv_prepare_init? 在uv.h有一个函数定义,但是无处可以找到C文件中的函数体。但是,在文档上,没有关键字,因为已弃用未定义引用libuv上的`uv_prepare_init'

有没有解决方案可以取代uv_prepare_init? 我需要这个句柄在轮询I/O之前执行。

+0

嗨,欢迎来到Stack Overflow,请阅读如何创建[最小,完整和可验证的示例](https://stackoverflow.com/help/mcve),并花时间浏览[Welcome Tour ](https://stackoverflow.com/tour)了解你在这里的方式(也可以赚取你的第一张徽章)。 – DarkCygnus

回答

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),您可以自由使用它。
无需以任何方式将替换为