c_by_val_5.f90
来自「用于进行gcc测试」· F90 代码 · 共 70 行
F90
70 行
! { dg-do run }! Overwrite -pedantic setting:! { dg-options "-Wall" }!! Tests the fix for PR31668, in which %VAL was rejected for! module and internal procedures.! subroutine bmp_write(nx) implicit none integer, value :: nx if(nx /= 10) call abort() nx = 11 if(nx /= 11) call abort()end subroutine bmp_writemodule x implicit none ! The following interface does in principle ! not match the procedure (missing VALUE attribute) ! However, this occures in real-world code calling ! C routines where an interface is better than ! "external" only. interface subroutine bmp_write(nx) integer :: nx end subroutine bmp_write end interfacecontains SUBROUTINE Grid2BMP(NX) INTEGER, INTENT(IN) :: NX if(nx /= 10) call abort() call bmp_write(%val(nx)) if(nx /= 10) call abort() END SUBROUTINE Grid2BMPEND module x! The following test is possible and! accepted by other compilers, but! does not make much sense.! Either one uses VALUE then %VAL is! not needed or the function will give! wrong results.!!subroutine test()! implicit none! integer :: n! n = 5! if(n /= 5) call abort()! call test2(%VAL(n))! if(n /= 5) call abort()! contains! subroutine test2(a)! integer, value :: a! if(a /= 5) call abort()! a = 2! if(a /= 2) call abort()! end subroutine test2!end subroutine testprogram main use x implicit none! external test call Grid2BMP(10)! call test()end program main! { dg-final { cleanup-modules "x" } }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?