Escribo código que llamará a una función C de Fortran utilizando el mecanismo de interoperabilidad C de Fortran (introducido en Fortran 2003 e implementado en las versiones más nuevas de gfortran e ifort).Matrices de cadenas en puentes Fortran-C usando iso_c_binding
This answer es casi lo que necesito, pero yo no puedo sacarlo de mi cabeza lo que la declaración de interfaz que debe utilizar en Fortran para una función C que tiene este aspecto:
int use_array(int n, char * array[]){
int i;
for(i=0; i<n; i++){
printf("Item %d = %s\n",i,array[i]);
}
return n;
}
No me queda claro lo que la declaración debe ser para la interfaz en el extremo Fortran:
interface
function use_array(n, x) bind(C)
use iso_c_binding
integer (c_int) use_array
integer (c_int), value :: n
character(c_char) WHAT_SHOULD_GO_HERE? :: x
end function use_array
end interface
sí sé que voy a tener que lidiar con el problema de terminación nula también.
Muchas gracias por francescalus de usuario para la edición amablemente esta pregunta para que me parecen menos educados mediante la eliminación de un "gracias" al final de la misma. Gracias a Dios que usuarios como ellos están cerca para evitar que las personas hagan preguntas ilegibles con cortesía cotidiana. – JoeZuntz