我正在尝试将一些 C++ 代码集成到 Fortran 中。我对类型之间的等价有疑问,
Fortran integer*1是否等效于 C++ bool?¿ 如果不是,正确的 C++ 等效类型是什么?¿
非常感谢您!
我正在尝试将一些 C++ 代码集成到 Fortran 中。我对类型之间的等价有疑问,
Fortran integer*1是否等效于 C++ bool?¿ 如果不是,正确的 C++ 等效类型是什么?¿
非常感谢您!
从此链接引用:
INTEGER(1) 类型应该用于大型数组,当内存对于仅具有 -129 到 127 范围内的正、负和零整数值的变量非常宝贵时。
所以,我会说它的C/C++
等价物是signed char
. 相当于bool
是 Fortran 的logical
类型。
编辑:MSB 的回答比我的要好得多;你最好按照他的建议去做。
最好的办法是使用提供与 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。