1

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

Fortran integer*1是否等效于 C++ bool?¿ 如果不是,正确的 C++ 等效类型是什么?¿

非常感谢您!

4

2 回答 2

2

从此链接引用:

INTEGER(1) 类型应该用于大型数组,当内存对于仅具有 -129 到 127 范围内的正、负和零整数值的变量非常宝贵时。

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

编辑:MSB 的回答比我的要好得多;你最好按照他的建议去做。

于 2012-05-07T10:00:19.200 回答
2

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

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

于 2012-05-07T22:25:04.900 回答