2

我正在尝试使用 openmpi 编译程序,但我的代码没有给出任何错误,而是 mpi 标头之一:

/usr/include/openmpi-x86_64/openmpi/ompi/mpi/cxx/mpicxx.h:168: error: expected identifier before numeric constant
/usr/include/openmpi-x86_64/openmpi/ompi/mpi/cxx/mpicxx.h:168: error: expected unqualified id before numeric constant

标题中的相关代码行简单地读取:

namespace MPI {

我正在使用 mpiCC 编译器。难道我做错了什么?或者这是openmpi中的错误?

提前致谢。

4

1 回答 1

1

虽然我无法重现您遇到的问题,但可以在 中找到以下评论mpi.h,其中mpicxx.h包括:

/*                                                                             
 * Conditional MPI 2 C++ bindings support.  Include if:
 *   - The user does not explicitly request us to skip it (when a C++ compiler
 *       is used to compile C code).
 *   - We want C++ bindings support
 *   - We are not building OMPI itself
 *   - We are using a C++ compiler
 */
#if !defined(OMPI_SKIP_MPICXX) && OMPI_WANT_CXX_BINDINGS && !OMPI_BUILDING
#if defined(__cplusplus) || defined(c_plusplus) 
#include "openmpi/ompi/mpi/cxx/mpicxx.h"
#endif
#endif

如果您不使用已弃用的 C++ 绑定,则可能的解决方法是添加

-DOMPI_SKIP_MPICXX

到你的CXXFLAGS. 希望这可能会有所帮助。

于 2012-10-03T15:30:10.307 回答