-1

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

#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不是一种选择,因为这会破坏向后兼容性。是否可以将COpenMPI 的 -Interface 与 一起使用C++

4

2 回答 2

1

LB 是官方 MPI C++ 绑定的一部分。如果不关闭整个 C++ 绑定集,就无法关闭它。

但请注意,MPI“LB”位于 MPI:: 命名空间中。所以你也可以让你的 LB 成为一个实际的常量(与 #define 相比)——也许在你的头文件中是这样的:

extern const int LB;

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

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

于 2013-03-10T17:41:04.767 回答
0

可以使用宏禁用 OpenMPI C++ 绑定

#define OMPI_SKIP_MPICXX
于 2013-03-08T11:02:35.697 回答