bind_c_usage_16.f03

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

F03
58
字号
! { dg-do run }! { dg-additional-sources bind_c_usage_16_c.c }!! PR fortran/34079!! Ensure character-returning, bind(C) function work.!module mod  use iso_c_binding  implicit nonecontains  function bar(x)  bind(c, name="returnA")    character(len=1,kind=c_char) :: bar, x    bar = x    bar = 'A'  end function bar  function foo()  bind(c, name="returnB")    character(len=1,kind=c_char) :: foo    foo = 'B'  end function fooend module modsubroutine test() bind(c)  use mod  implicit none  character(len=1,kind=c_char) :: a  character(len=3,kind=c_char) :: b  character(len=1,kind=c_char) :: c(3)  character(len=3,kind=c_char) :: d(3)  integer :: i  a = 'z'  b = 'fffff'  c = 'h'  d = 'uuuuu'  a = bar('x')  if (a /= 'A') call abort()  b = bar('y')  if (b /= 'A' .or. iachar(b(2:2))/=32 .or. iachar(b(3:3))/=32) call abort()  c = bar('x')  if (any(c /= 'A')) call abort()  d = bar('y')  if (any(d /= 'A')) call abort()  a = foo()  if (a /= 'B') call abort()  b = foo()  if (b /= 'B') call abort()  c = foo()  if (any(c /= 'B')) call abort()  d = foo()  if (any(d /= 'B')) call abort()  do i = 1,3    if(iachar(d(i)(2:2)) /=32 .or. iachar(d(i)(3:3)) /= 32) call abort()  end doend subroutine

⌨️ 快捷键说明

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