我正在使用C++和Fortran代碼。 C++代碼需要調用Fortran子例程。 Fortran子例程的一個參數具有Fortran類型complex
。在C++和Fortran之間傳遞複數數組代碼
C++代碼位於一個文件中,Fortran代碼子例程位於另一個文件中。我在64位GNU/Linux
系統上使用gcc
和gfortran
。
這裏是示出的Fortran子程序聲明一個片段(和一些附加行):
SUBROUTINE minp (AMP,L,L2,FMINP,PHI)
REAL*4 AMP(L),FMINP(L)
COMPLEX PHI(L)
在C++文件,我明白傳遞給Fortran代碼參數需要通過引用傳遞,並而不是價值。 Fortran子程序在使用extern
關鍵字的C++代碼中(位於源代碼文件的頂部)被聲明爲函數。
extern "C"
{
minp_ (float *amp, int &L, int &L2, float *fminp, complex *phi);
}
但是,函數的最後一個參數是複數C數組。如何可能:
- 爲C/C++中的複雜數組分配內存以作爲
phi
參數傳入? - 將數組作爲參數傳遞給Fortran子例程,以便內存可以被Fortran代碼使用?
謝謝,M.S.B.這確實是一種可行的方式。 –