要在我们的代码中设置所谓的功能标志,我们使用一个外部文件。在那里定义宏
#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/