要在我们的代码中设置所谓的功能标志,我们使用外部文件。在那里,我们定义宏如何避免与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