在C ++应用程序中使用纯C(非类包装)函数时是否有任何问题?

时间:2010-11-06 18:23:20

标签: c++ c interop

我打算在C ++应用程序中使用纯C MPI库,我不想通过运行eg来添加不必要的膨胀。提升包含MPI::<func>类中所有内容的MPI层。

我应该注意什么?

2 个答案:

答案 0 :(得分:8)

您应该在extern "C"块中包装C-headers的所有包含,以避免出现C ++编译器名称错误的问题。

extern "C" {
    // include C-headers
}

了解更多here

答案 1 :(得分:2)

不是真的,因为大多数库都准备包含在C ++编译器中(如果没有,你可以像上面的Space Cowboy那样建议)。但是,我建议你(如果你不介意)重新考虑提升MPI。它不会增加不必要的膨胀,并在面向对象的环境中为您提供更全面的MPI接口。它为通过MPI传输的类型添加了更多语义,甚至为您提供了更多“功能”操作符,例如使用仿函数进行计算操作(例如reduce)等。它们添加的代码数量可以忽略不计,并且大多数情况下,没有运行时开销,因为抽象是通过模板元编程实现的。