COMPLEX 数据的互操作性情况在 SPARC 32 位和 64 位实现之间有所不同。
在 32 位平台上,返回 COMPLEX 或 DOUBLE COMPLEX 的 Fortran 函数等同于具有一个指向内存中返回值的附加第一参数的 C 函数。Fortran 函数及其相应的 C 函数的一般样式如下:
Fortran 函数 |
C 函数 |
||
---|---|---|---|
|
|
表 11–13 返回 COMPLEX 数据的函数(32 位 SPARC)
Fortran 调用 C |
C 调用 Fortran |
||
---|---|---|---|
|
|
在 64 位 SPARC 环境下,在浮点寄存器中返回 COMPLEX 值: 在 %f0 和 %f1 中返回 COMPLEX 和 DOUBLE COMPLEX,在 %f0、%f1、%f2 和 %f3 中返回 COMPLEX*32。对于 64 位 SPARC,返回结构(其字段均为浮点型)的 C 函数将在浮点寄存器中返回该结构,但条件是最多需要 4 个这样的寄存器进行此操作。在 64 位 SPARC 平台上,Fortran 函数及其相应的 C 函数的一般样式如下:
Fortran 函数 |
C 函数 |
---|---|
COMPLEX FUNCTION CF(a1, a2, ..., an) |
struct {float r,i;} cf_ (a1, a2, ..., an) |
表 11–14 返回 COMPLEX 数据的函数(64 位 SPARC)
Fortran 调用 C |
|
---|---|
|
|
C 调用 Fortran |
|
|