1
Fortran 2003에서 할당 할 수있는 배열은 이 아니고은 C와 상호 운용되지 않습니다. 이것은 메모리에 저장된 추가 배열 정보와 관련이 있으며 C 해석을 방해 할 수 있다고 생각합니다.Fortran2003에서 C와 상호 운용 가능한 1D 가정 형 배열입니다?
그러나 1D가 모양 배열을 가정 할 때 임시 인수를 선언하면 어떻게 될까요? 예를
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
에 대한 포트란의 인터페이스는 C에있는 동안
interface
function some_c_function(a)
integer(c_int) :: a(*)
end interface
, 포트란 2003 표준을 준수 프로토 타입 어쩌면
int some_c_function(int *a)
뜻을 같이 할 수있다?
그렇다면 bind 인수를 ** assuming size **로 bind (c) 인터페이스에 선언하면, 모든 종류의 1D 배열을 전달할 수 있고 나머지는 컴파일러에서 처리 할 수 있습니까? – Francium
네, 그렇습니다. 그러나 때로는 일시적으로 만들어야합니다. –