Ich schreibe Code, der eine C-Funktion von Fortran aus aufruft und dabei den C-Interoperabilitätsmechanismus von Fortran verwendet (eingeführt in Fortran 2003 und implementiert in neueren Versionen von gfortran und ifort).
Diese Antwort ist fast das, was ich brauche, aber ich komme nicht ganz dahinter, welche Schnittstellendeklaration ich in Fortran für eine C-Funktion verwenden sollte, die so aussieht:
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;
}
Mir ist nicht klar, wie die Deklaration für die Schnittstelle auf der Fortran-Seite aussehen soll:
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
Ich weiß, dass ich mich auch mit dem Problem der Nullterminierung auseinandersetzen muss.