Ошибка компиляции Openmpi: mpicxx.h "ожидаемый идентификатор перед числовой константой"

Я пытаюсь скомпилировать программу с помощью 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?

Заранее спасибо.

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, Надеюсь, что это может помочь.

Другие вопросы по тегам