0

I would like to write a core main server handles request by user (in shell like enviorment) and load dynamic libraries executes ioctls and some debugfs. The core server is in c++ and the loadable libs are written in c. Is it a good design?


What about a shell script load the libraries and handles the request, is it possible at all?

4

2 回答 2

3

C++ 在设计时考虑到了 C 兼容性,因此绝对可以在用 C++ 编写的程序中使用用 C 编写的库。该语言甚至提供了将 C 头文件与 C++ 一起使用的语法,因此您尝试做的事情绝对是可能的。

在某些情况下,从可读性的角度来看,它可能并不理想,因为 C 代码可能使用不透明的句柄来模拟对象:这对 C 来说是惯用的,但对 C++ 来说却不是。然而,这个问题可以通过在 C 库周围编写一个 C++ 包装器来轻松解决,而且开销很小。

于 2013-03-17T07:04:57.467 回答
2

程序或其部分是用 C++ 编写但与 C 中可加载模块的接口的设计并非闻所未闻。当开发人员希望利用 C++(STL、异常)的强大功能进行实现,但又希望在接口上保留 C 的简单性和唯一性而不处理 C++ 编译器如何实现异常或 RTTI 的细微差异时,就会遇到这种情况。在 Unix 中,另一个原因是 C++ 从未达到它在 Windows 中的水平,因此工具支持仍然是纯 C 的最佳选择。

这方面的一个例子是内部用 C++ 编写的第三方 Python 模块。尽管在 C++ 中实现,但它们仅使用 C 与 Python 进行通信,因为这是 Python/C API 所期望的。在某些情况下,这种通信可能很丰富——例如,C++ 异常可以报告为 Python 异常,反之亦然(Boost.Python 会自动执行此操作)。GTK-- 工具包允许用 C++ 编写 GTK 小部件并将它们的界面导出为常规 GTK 小部件。

于 2013-03-17T07:07:58.983 回答