1! { dg-do compile } 2program main 3use iso_c_binding 4 interface 5 subroutine p1(f, a1, a2, a3, a4) bind(c, name='printf') ! Doubtful use ... 6 import :: c_ptr, c_int, c_double 7 type(c_ptr), value :: f 8 integer(c_int), value :: a1, a3 9 real(c_double), value :: a2, a4 10 end subroutine p1 11 12 subroutine p2(f, a1, a2, a3, a4) bind(c, name='printf') ! ... with incompatible interfaces 13 import :: c_ptr, c_int, c_double 14 type(c_ptr), value :: f 15 real(c_double), value :: a1, a3 16 integer(c_int), value :: a2, a4 17 end subroutine p2 18 end interface 19 20 type(c_ptr) :: f_ptr 21 character(len=20), target :: format 22 23 f_ptr = c_loc(format(1:1)) 24 25 format = 'Hello %d %f %d %f\n' // char(0) 26 call p1(f_ptr, 10, 1.23d0, 20, 2.46d0) 27 28 format = 'World %f %d %f %d\n' // char(0) 29 call p2(f_ptr, 1.23d0, 10, 2.46d0, 20) 30end program main 31