将C组件放入C++框架的最佳做法是什么?将C组件集成到C++框架中的最佳做法是什么?
我们的实验室正在为我们的研究构建一个C++框架。它使用一些现有的软件作为组件。我的工作是软件C.集成软件的结构非常简单:
- 在A.H
- 在B.H。一组数据结构定义和函数原型一套
extern
变量 - 其余的源代码是实现B.h.中定义的函数的.c文件。
将C组件放入C++框架的最佳做法是什么?将C组件集成到C++框架中的最佳做法是什么?
我们的实验室正在为我们的研究构建一个C++框架。它使用一些现有的软件作为组件。我的工作是软件C.集成软件的结构非常简单:
extern
变量包装纸所有的C头文件和源文件与:
#ifdef __cplusplus
extern "C" {
#endif
//... rest of the file
#ifdef __cplusplus
}
#endif
这是编译和C++编译器链路正常。这只是第一步。根据实现以及C代码中如何使用函数,C++编译器可能会抱怨几件事情。但试试这是你的第一步。
请参阅here了解如何从C++访问C函数的不错介绍。
值得考虑一下,使用C++的附加功能是否可以有效改善客户端使用风格。你通常可以简单地包装C函数以获得更多的C++风格体验。例如:
x = a + b
,而不是x = add(a, b)
)void*
型这只是场外的顶级我的头的东西......如果您展示一个具有代表性的函数样本,那么给出具体的答案就容易多了。
当然,正如你所说的你有C源代码,你可以尝试用C++编译器编译它,这会让你选择避免“extern C”和全局名称空间的污染,以及添加上面的许多不作为包装,但作为调整现有的代码:可以节省您的时间,并使维护更容易。
+1:干净地封装一些函数调用返回的数据,然后用作输入......对于所有那些从C++角度来看,C++ API实际上都是“从里到外”建模的,比如使用不透明的手柄或其他任何环境,都可以翻到课堂上。 – 2011-03-29 06:25:52