将C组件放入C ++框架的最佳做法是什么?
我们的实验室正在为我们的研究构建一个C ++框架。它使用一些现有软件作为组件。我的工作是将软件集成到C中。软件的结构非常简单:
extern
变量
答案 0 :(得分:3)
值得考虑的是,使用C ++的附加功能是否可以有效地改进客户端使用的风格。您通常可以轻松地包装C函数以获得更多C ++风格的体验。例如:
x = a + b
而不是x = add(a, b)
)void*
类型的转换这只是我头脑中的东西......如果你展示一些有代表性的功能样本,那么给出具体答案要容易得多。
当然,正如你所说的那样你有C源代码,你可以尝试使用C ++编译器进行编译,它可以让你选择避免“extern C”和一些全局命名空间的污染,以及上面的大部分内容不是作为包装,而是作为对现有代码的调整:可以节省您的时间并使维护更容易。
答案 1 :(得分:2)
用:
包装所有C头文件和源文件#ifdef __cplusplus
extern "C" {
#endif
//... rest of the file
#ifdef __cplusplus
}
#endif
这是在c ++编译器中正确编译和链接。这只是一个初始步骤。根据实现以及如何在C代码中使用函数,c ++编译器可能会抱怨一些事情。但试试这是你的第一步。
有关如何从C ++访问C函数的详细介绍,请参阅here。