要在我們的代碼中設置所謂的功能標誌,我們使用外部文件。在那裏,我們定義宏如何避免與OpenMPI的名稱衝突?
#define LB
我們只是移植我們的軟件,C++,然後錯誤來了,specificially這一個
/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的接口與C++
?
一個可能的骯髒的黑客可能是'#define LB LB'。 – 2013-03-08 10:56:24
最簡潔的方法是確保'#define'出現在翻譯單元中的#includeed OpenMPI標頭後面。 – 2013-03-08 11:06:48
@Michael Wild:不幸的是,這是不可能的,因爲'mpi.h'被包含在太多的文件中,並且特徵標誌在開始時被解析以打開或關閉這些特徵。 – 2013-03-08 12:18:05