1! { dg-do compile } 2! { dg-options "-Wc-binding-type" } 3! This should compile, though there is a warning about the type of len 4! (return variable of strlen()) for being implicit. 5! PR fortran/32797 6! 7MODULE ISO_C_UTILITIES 8 USE ISO_C_BINDING 9 implicit none 10 CHARACTER(C_CHAR), DIMENSION(1), SAVE, TARGET, PRIVATE :: dummy_string="?" 11CONTAINS 12 FUNCTION C_F_STRING(CPTR) RESULT(FPTR) 13 use, intrinsic :: iso_c_binding 14 TYPE(C_PTR), INTENT(IN) :: CPTR ! The C address 15 CHARACTER(KIND=C_CHAR), DIMENSION(:), POINTER :: FPTR 16 INTERFACE 17 FUNCTION strlen(string) RESULT(len) BIND(C,NAME="strlen") ! { dg-warning "Implicitly declared" } 18 USE ISO_C_BINDING 19 TYPE(C_PTR), VALUE :: string ! A C pointer 20 END FUNCTION 21 END INTERFACE 22 CALL C_F_POINTER(FPTR=FPTR, CPTR=CPTR, SHAPE=[strlen(CPTR)]) 23 END FUNCTION 24END MODULE ISO_C_UTILITIES 25