要在我们的代码中设置所谓的功能标志,我们使用一个外部文件。在那里定义宏

#define LB


我们只是将软件移植到C ++,然后出现了错误,特别是这个错误

/usr/local/openmpi-1.6.4/include/openmpi/ompi/mpi/cxx/constants.h:174:28: error: declaration does not declare anything [-fpermissive]


在相应的文件中查找它,OpenMPI使用称为LB的内部数据类型。

OMPI_DECLSPEC extern const Datatype LB;


如何避免名称冲突?重命名宏#define LB是不可选项,因为这会破坏向后兼容性。是否可以将OpenMPI的C-接口与C++一起使用?

最佳答案

LB是MPI C ++官方绑定的一部分。您必须关闭整个C ++绑定集才能将其关闭。

但是请注意,MPI“ LB”位于MPI ::名称空间中。因此,您也可以将LB设为实际常数(与#define相对)-也许在头文件中是这样的:

extern const int LB;


(然后,您必须在某个地方实际实例化const int LB)

这将使LB常量位于MPI名称空间之外,因此不会发生冲突。

关于c++ - 如何避免与OpenMPI发生名称冲突?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15291944/

10-11 18:51