查询集成Fortran和C ++代码

时间:2012-05-07 09:53:55

标签: c++ integration fortran

我正在尝试将一些C ++代码集成到Fortran中。 我对类型之间的等价性存在疑问,

Fortran 整数* 1 等同于C ++ bool ?如果没有,那么正确的C ++等效类型是什么?¿

提前非常感谢你!

2 个答案:

答案 0 :(得分:2)

引自this link

  

当内存处于时,INTEGER(1)类型应该用于大型数组   变量的溢价,只有正面,负面和   零整数值在-129到127之间。

所以,我要说它的C/C++等价物是signed char。相当于bool的是Fortran的logical类型。

编辑:M.S.B.的答案比我的好;做他建议的事情会更好。

答案 1 :(得分:2)

最好的办法是使用Fortran ISO_C_Binding,它提供与C类型匹配的类型。该方法与编译器和平台无关。我对C ++类型不太确定,但是如果你确定它们的C等价物就应该是好的。 ISO_C_Binding提供Fortran类型C_BOOL以匹配C类型_Bool。绑定提供了一长串等效类型。列表出现的一个地方是gfortran手册的“内在模块”一章。另请参阅“混合语言编程”一章。虽然我引用了gfortran手册,但作为Fortran 2003语言标准的一部分,这些功能并不特定于编译器。

P.S。评论建议使用int8_t。 Fortran端与ISO C绑定的匹配类型是C_INT8_T。