问题描述
假设我有这个 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 类型。