c_assoc.f90

来自「用于进行gcc测试」· F90 代码 · 共 71 行

F90
71
字号
! { dg-do run }! { dg-additional-sources test_c_assoc.c }module c_assoc  use, intrinsic :: iso_c_binding  implicit nonecontains  function test_c_assoc_0(my_c_ptr) bind(c)    use, intrinsic :: iso_c_binding, only: c_ptr, c_int, c_associated    integer(c_int) :: test_c_assoc_0    type(c_ptr), value :: my_c_ptr    if(c_associated(my_c_ptr)) then       test_c_assoc_0 = 1    else       test_c_assoc_0 = 0    endif  end function test_c_assoc_0  function test_c_assoc_1(my_c_ptr_1, my_c_ptr_2) bind(c)    use, intrinsic :: iso_c_binding, only: c_ptr, c_int, c_associated    integer(c_int) :: test_c_assoc_1    type(c_ptr), value :: my_c_ptr_1    type(c_ptr), value :: my_c_ptr_2    if(c_associated(my_c_ptr_1, my_c_ptr_2)) then       test_c_assoc_1 = 1    else       test_c_assoc_1 = 0    endif  end function test_c_assoc_1  function test_c_assoc_2(my_c_ptr_1, my_c_ptr_2, num_ptrs) bind(c)    integer(c_int) :: test_c_assoc_2    type(c_ptr), value :: my_c_ptr_1    type(c_ptr), value :: my_c_ptr_2    integer(c_int), value :: num_ptrs        if(num_ptrs .eq. 1) then       if(c_associated(my_c_ptr_1)) then          test_c_assoc_2 = 1       else          test_c_assoc_2 = 0       endif    else       if(c_associated(my_c_ptr_1, my_c_ptr_2)) then          test_c_assoc_2 = 1       else          test_c_assoc_2 = 0       endif    endif  end function test_c_assoc_2  subroutine verify_assoc(my_c_ptr_1, my_c_ptr_2) bind(c)    type(c_ptr), value :: my_c_ptr_1    type(c_ptr), value :: my_c_ptr_2    if(.not. c_associated(my_c_ptr_1)) then       call abort()    else if(.not. c_associated(my_c_ptr_2)) then       call abort()    else if(.not. c_associated(my_c_ptr_1, my_c_ptr_2)) then       call abort()    endif  end subroutine verify_assoc  end module c_assoc! { dg-final { cleanup-modules "c_assoc" } }

⌨️ 快捷键说明

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