! { dg-do run } ! Support F2008's c_sizeof() ! use iso_c_binding, only: c_int, c_char, c_ptr, c_intptr_t, c_null_ptr, c_sizeof integer(kind=c_int) :: i, j(10) character(kind=c_char,len=4),parameter :: str(1 ) = "abcd" character(kind=c_char,len=1),parameter :: str2(4) = ["a","b","c","d"] type(c_ptr) :: cptr integer(c_intptr_t) :: iptr ! Using F2008's C_SIZEOF i = c_sizeof(i) if (i /= 4) call abort() i = c_sizeof(j) if (i /= 40) call abort() i = c_sizeof(str2) if (i /= 4) call abort() i = c_sizeof(str2(1)) if (i /= 1) call abort() i = c_sizeof(str2(1:3)) if (i /= 3) call abort() write(*,*) c_sizeof(cptr), c_sizeof(iptr), c_sizeof(C_NULL_PTR) ! Using GNU's SIZEOF i = sizeof(i) if (i /= 4) call abort() i = sizeof(j) if (i /= 40) call abort() i = sizeof(str) if (i /= 4) call abort() i = sizeof(str(1)) if (i /= 4) call abort() i = sizeof(str(1)(1:3)) if (i /= 3) call abort() end