【问题标题】:Interop of C structure with FortranC 结构与 Fortran 的互操作
【发布时间】:2021-07-03 18:29:20
【问题描述】:

假设我有这个 C 结构:

struct
{
    union
    {
        unsigned char *lpbData; /* data passed to XL */
        void* hdata;            /* data returned from XL */
    } h;
    long cbData;
} bigdata;  

而且我必须与 Fortran 进行“互操作”。我该怎么做?

(我可以创建一个包含 Union 的 Fortran 结构(我的 Fortran 编译器知道 Union 扩展)但 Union 不能包含任何可分配的内容,也不能包含指针......)

【问题讨论】:

    标签: c fortran fortran-iso-c-binding


    【解决方案1】:

    你不能。来自 Fortran 2018,第 476 页。

    没有可与包含位字段或包含灵活数组成员的 C 结构类型互操作的 Fortran 类型。没有可与 C 联合类型互操作的 Fortran 类型。

    【讨论】:

    • 那我不明白VARIANT文件ipsxe2019-samples-win-20190327\compiler_f\COM\src\EXCEL.f90(来自software.intel.com/content/www/us/en/develop/download/…)指的是什么,因为VARIANT excel类型众所周知是带有联合的C实现...
    • 单词 variant 在 Fortran 2018 标准中出现了两次,用于正常的英语使用。来自第 573 页:另一个常见的变体是参数 ... 看起来您需要阅读英特尔文档以查看这是否是供应商扩展。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    相关资源
    最近更新 更多