c_loc_tests_11.f03

来自「用于进行gcc测试」· F03 代码 · 共 50 行

F03
50
字号
! { dg-do compile }! Test argument checking for C_LOC with subcomponent parameters.module c_vhandle_mod  use iso_c_binding    type double_vector_item    real(kind(1.d0)), allocatable :: v(:)  end type double_vector_item  type(double_vector_item), allocatable, target :: dbv_pool(:)  real(kind(1.d0)), allocatable, target :: vv(:)  type foo     integer :: i  end type foo  type foo_item     type(foo), pointer  :: v => null()  end type foo_item  type(foo_item), allocatable :: foo_pool(:)  type foo_item2     type(foo), pointer  :: v(:) => null()  end type foo_item2  type(foo_item2), allocatable :: foo_pool2(:)contains   type(c_ptr) function get_double_vector_address(handle)    integer(c_int), intent(in) :: handle        if (.true.) then   ! The ultimate component is an allocatable target       get_double_vector_address = c_loc(dbv_pool(handle)%v)    else      get_double_vector_address = c_loc(vv)    endif      end function get_double_vector_address  type(c_ptr) function get_foo_address(handle)    integer(c_int), intent(in) :: handle        get_foo_address = c_loc(foo_pool(handle)%v)        get_foo_address = c_loc(foo_pool2(handle)%v) ! { dg-error "must be a scalar" }   end function get_foo_address    end module c_vhandle_mod

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?