In Fortran 2003 ist das zuweisbare Array nicht interoperabel mit C. Ich nehme an, dies hat etwas mit zusätzlichen Array-Informationen im Speicher zu speichern, die die C-Interpretation stören könnten.In Fortran2003, ist 1D angenommen Form-Array interoperabel mit C?
Aber was ist, wenn ich ein Dummy-Argument als 1D vermutete Form Array deklariere? vielleicht zum Beispiel
subroutine outter_subroutine(ma, size_ma)
integer :: size_ma
integer :: ma(size_ma)
call fortran_subroutine(ma)
end subroutine
!-----------------------------
subroutine fortran_subroutine(a)
integer, intent(in) :: a(:)
integer,(kind=c_int):: ierr
...
ierr = some_c_function(a)
...
end subroutine
Die Schnittstelle in Fortran kann
interface
function some_c_function(a)
integer(c_int) :: a(*)
end interface
während in C mögen, den Prototyp
int some_c_function(int *a)
Will, der die Fortran 2003-Standard entsprechen?
Also, heißt das, wenn ich das Dummy-Argument mit ** vermuteter Größe ** in einer Bind (c) -Schnittstelle deklariere, kann ich alle Arten von 1D-Array hineingeben, und der Compiler kümmert sich um den Rest Sache? – Francium
Ja, das stimmt. Aber manchmal muss eine temporäre gemacht werden. –