上面代码,type版,在win10-x64用gfortran-11.2.0编译,出错:
gfortran -Wall -o \"streamfile2\" \"streamfile2.f90\"
streamfile2.f90:5:28:
5 | character(len=4) :: flag
| 1
Warning: Component \'flag\' in derived type \'grad_head\' at (1) may not be C interoperable, even though derived type \'grad_head\' is BIND(C) [-Wc-binding-type]
streamfile2.f90:5:28:
5 | character(len=4) :: flag !
| 1
Error: Component \'flag\' of BIND(C) type at (1) must have length one
编译失败。
作如下修改:
--- character(len=4) :: flag
+++ character(kind=c_char) :: flag(1:4)
再编译,通过。
如何读取三个字节长度的整型?或者如何定义一个3字节长度的整型?
我看其它语言(IDL语言,interactive data language)是通过先读取4个字节长度的整型,然后通过与16进制整数‘FFFFFF\'按位和(IAND)来得到的。我倒是按照IDL语言,用Fortran使用位操作内置函数IAND做了,但是没有得到正确的整型数据结果。
character(len=3) 就是3字节长度的。然后通过 transfer 转换。近几天我会写一个教程出来。
如何读取三个字节长度的整型?或者如何定义一个3字节长度的整型?
我看其它语言(IDL语言,interactive data language)是通过先读取4个字节长度的整型,然后通过与16进制整数‘FFFFFF\'按位和(IAND)来得到的。我倒是按照IDL语言,用Fortran使用位操作内置函数IAND做了,但是没有得到正确的整型数据结果。