value_4.f90
来自「用于进行gcc测试」· F90 代码 · 共 85 行
F90
85 行
! { dg-do run }! { dg-additional-sources value_4.c }! { dg-options "-ff2c -w -O0" }!! Tests the functionality of the patch for PR29642, which requested the! implementation of the F2003 VALUE attribute for gfortran, by calling! external C functions by value and by reference. This is effectively! identical to c_by_val_1.f, which does the same for %VAL.!! Contributed by Paul Thomas <pault@gcc.gnu.org> !module global interface delta module procedure deltai, deltar, deltac end interface delta real(4) :: epsi = epsilon (1.0_4)contains function deltai (a, b) result (c) integer(4) :: a, b logical :: c c = (a /= b) end function deltai function deltar (a, b) result (c) real(4) :: a, b logical :: c c = (abs (a-b) > epsi) end function deltar function deltac (a, b) result (c) complex(4) :: a, b logical :: c c = ((abs (real (a-b)) > epsi).or.(abs (aimag (a-b)) > epsi)) end function deltacend module global program value_4 use global interface function f_to_f (x, y) real(4), pointer :: f_to_f real(4) :: x, y value :: x end function f_to_f end interface interface function i_to_i (x, y) integer(4), pointer :: i_to_i integer(4) :: x, y value :: x end function i_to_i end interface interface complex(4) function c_to_c (x, y) complex(4) :: x, y value :: x end function c_to_c end interface real(4) a, b, c integer(4) i, j, k complex(4) u, v, w a = 42.0 b = 0.0 c = a b = f_to_f (a, c) if (delta ((2.0 * a), b)) call abort () i = 99 j = 0 k = i j = i_to_i (i, k) if (delta ((3_4 * i), j)) call abort () u = (-1.0, 2.0) v = (1.0, -2.0) w = u v = c_to_c (u, w) if (delta ((4.0 * u), v)) call abort ()end program value_4! { dg-final { cleanup-modules "global" } }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?