C 结构与 Fortran 的互操作

问题描述

假设我有这个 C 结构:

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

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

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

解决方法

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

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