我正在尝试将一些C ++代码集成到Fortran中。 我对类型之间的等价性存在疑问,
Fortran 整数* 1 等同于C ++ bool ?如果没有,那么正确的C ++等效类型是什么?¿
提前非常感谢你!
答案 0 :(得分:2)
引自this link:
当内存处于时,INTEGER(1)类型应该用于大型数组 变量的溢价,只有正面,负面和 零整数值在-129到127之间。
所以,我要说它的C/C++
等价物是signed char
。相当于bool
的是Fortran的logical
类型。
答案 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。