gpt4 book ai didi

c++ - 如何避免与 OpenMPI 的名称冲突?

转载 作者:行者123 更新时间:2023-11-30 19:22:45 25 4
gpt4 key购买 nike

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

#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 接口(interface)与 C++ 一起使用?

最佳答案

LB 是官方 MPI C++ 绑定(bind)的一部分。如果不关闭整套 C++ 绑定(bind),则无法关闭它。

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

extern const int LB;

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com