Scrivo codice che chiamerà una funzione C di Fortran utilizzando il meccanismo di interoperabilità C di Fortran (introdotto in Fortran 2003 e implementato nelle versioni più recenti di gfortran e ifort).Array di stringhe nei bridge Fortran-C che utilizzano iso_c_binding
This answer è quasi quello che mi serve, ma non riesco a ottenere la mia testa intorno a che cosa dichiarazione di interfaccia dovrei usare in Fortran per una funzione C che assomiglia a questo:
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;
}
Io non sono chiare ciò che la dichiarazione dovrebbe essere per l'interfaccia alla fine 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
so che dovrò affrontare la questione terminazione null troppo.
Molte grazie per francescalus utente per la modifica utilmente a questa domanda per farmi sembrare meno educato rimuovendo un "grazie" alla fine di esso. Grazie al cielo, gli utenti come loro sono in giro per impedire alle persone di fare domande illeggibili con la cortesia di tutti i giorni. – JoeZuntz