일부 Fortran 95 코드에는 포인터 필드가있는 유형이 있습니다. 컴파일시에 초기화되는 type(foo)
이라는 모듈 변수를 선언하고 싶습니다. 다음과 같은 내용 :fortran에서 유형 생성자에 포인터를 사용할 수 있습니까?
module foo_module
implicit none
type foo_type
integer :: x
logical, pointer :: x_flag => null()
end type foo_type
logical, target :: bar_flag
! this does not compile of course:
type(foo_type) :: bar = foo_type(1, bar_flag)
end module foo_module
위의 스 니펫은 컴파일되지 않습니다.
module foo_module
implicit none
type foo_type
integer :: x
logical, pointer :: x_flag => null()
end type foo_type
logical, target :: bar_flag
type(foo_type) :: bar
contains
subroutine init()
bar%x = 1
bar%x_flag => bar_flag
end subroutine init
end module foo_module
하지만 초기화 서브 루틴없이이 작업을 수행 할 수 있습니다 : 나는 같은 별도의 서브 루틴을 사용하여 런타임에 bar
을 초기화 할 수 있음을 이해? 아니면 컴파일러에 의해 명시 적으로 호출되는 초기화 서브 루틴을 선언 할 수 있습니까? 참고 : Fortran 95에서이 작업을 수행해야합니다.
훌륭한 설명에 감사드립니다. Fortran 95 언어 하위 집합으로 제한되는 것은 정말 짜증납니다. ( – abbot