要在我们的代码中设置所谓的功能标志,我们使用外部文件。在那里我们定义宏
#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
不是一个选项,因为这会破坏向后兼容性。是否可以使用C
- OpenMPI接口与C++
?
答案 0 :(得分:1)
LB是官方MPI C ++绑定的一部分。如果不关闭整套C ++绑定,就无法将其关闭。
但请注意,MPI“LB”位于MPI ::名称空间中。所以你也可以让你的LB成为一个实际常数(相对于#define) - 在你的头文件中可能是这样的:
extern const int LB;
(然后你必须在某处实际实例化const int LB)
这会使LB常量超出MPI名称空间,因此不会发生冲突。
答案 1 :(得分:0)
可以使用宏
禁用OpenMPI C ++绑定#define OMPI_SKIP_MPICXX