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 + -
显示快捷键?