zeromq(https://github.com/zeromq/libzmq)似乎是用C ++编写的,但也为C ++(https://github.com/zeromq/cppzmq)提供了单独的绑定。
制作libzmq时,它仅在其构建目录中提供以下文件:
String url = ele.getAttribute("href") //to get the url of the particular element
并且没有头文件。
在单独的存储库中提供绑定和库有什么好处?即使绑定很多,也不应该总是包含一些标准绑定吗?
答案 0 :(得分:1)
ZMQ用C ++实现,但不提供类。该API用C语言编写,具有函数zmq_send
,zmq_poll
等,为套接字和上下文使用void *
参数。
cppzmq是libzmq的C ++绑定,主要定义类,因此无需编写:
int zmq_send (void *s_, const void *buf_, size_t len_, int flags_);
你会写:
zmq::socket_t s;
s.send(zmq::message_t);
它使您可以使用面向对象的设计并使语法更清晰(IMO)。
答案 1 :(得分:1)
libzmq在内部用C ++实现,仅公开了C API / ABI,以确保API / ABI的广泛可用性和长期稳定性。使用C API / ABI可以轻松地提供其他语言(如cppzmq)或更高级别的库(如czmq)的直接绑定,该库又具有C API / ABI和大量的语言绑定。
此外,以不影响现有用户的方式来发展API / ABI相对容易。
请注意,此保证仅适用于声明为STABLE的API / ABI部分。较新的功能会一直拖到成熟为止。
公开C ++ API将使其他语言的绑定更加困难,并且难以确保ABI稳定性。