本帖最后由 愤怒的三炮 于 2024-10-20 02:41 编辑
我有一个派生数据类型,需要在C和Fortran中共同使用。
在C这头,我定义为
[C] 纯文本查看 复制代码 struct MyType
{
char str[3];
int i;
};
在Fortran这头,我的定义为
[Fortran] 纯文本查看 复制代码 type,bind(c):: MyType
character(c_char):: str(3)
integer(c_int):: i
end type
正常使用是没有问题的。
但现在我需要取消它们的内存对齐,用以读取二进制文件。
于是我在C代码中添加了
[C] 纯文本查看 复制代码 #pragma pack(1)
同时,当我在Fortran中用sequence取消内存对齐时,编译器却不让我这么做,提示“Error: Derived type 'mytype' at (1) cannot have the SEQUENCE attribute because it is BIND(C)”.
我该如何同时在Fortran和C两头都取消内存对齐?
|