【问题标题】:Query integrating Fortran and C++ code查询集成 Fortran 和 C++ 代码
【发布时间】:2012-05-15 20:09:11
【问题描述】:

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

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

非常感谢您!

【问题讨论】:

    标签: c++ integration fortran


    【解决方案1】:

    引用this link:

    INTEGER(1) 类型应该用于内存在的大型数组 对于只有正数、负数和负数的变量的溢价 -129 到 127 范围内的零整数值..

    所以,我会说它的C/C++ 等效项是signed char。 bool 的等价物是 Fortran 的 logical 类型。

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

    【讨论】:

    • 我会说等价于int8_t,因为可能存在具有多字节char-s 的系统。
    • Fortran 逻辑通常是 4 个字节,但也可以是一个 - 与另一种语言的类型匹配存在风险。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      相关资源
      最近更新 更多