-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後方互換性が失われるため、マクロの名前を変更することはできません。Cで OpenMPI の -Interfaceを使用することは可能C++ですか?

4

2 に答える 2

1

LB は公式の MPI C++ バインディングの一部です。C++ バインディングのセット全体をオフにしない限り、これをオフにすることはできません。

ただし、MPI "LB" は MPI:: 名前空間にあることに注意してください。したがって、LB を実際の定数 (#define に対して) にすることもできます。おそらく、ヘッダー ファイルで次のようにします。

extern const int LB;

(もちろん、その const int LB を実際にどこかでインスタンス化する必要があります)

これにより、MPI 名前空間の外にある LB 定数が作成されるため、競合することはありません。

于 2013-03-10T17:41:04.767 に答える
0

マクロを使用してOpenMPIC++バインディングを無効にすることができます

#define OMPI_SKIP_MPICXX
于 2013-03-08T11:02:35.697 に答える