J'écris du code qui appellera une fonction C de Fortran en utilisant le mécanisme d'interopérabilité C de Fortran (introduit dans Fortran 2003 et implémenté dans les nouvelles versions de gfortran et ifort).Tableaux de chaînes dans les ponts Fortran-C utilisant iso_c_binding
This answer est presque ce que je dois, mais je ne peux pas tout à fait obtenir ma tête autour de ce que la déclaration que je devrais utiliser l'interface en Fortran pour une fonction C qui ressemble à ceci:
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;
}
Je ne suis pas clair ce que la déclaration devrait être de l'interface à l'extrémité 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
Je ne sais que je vais devoir faire face à la question null-termination aussi.
Un grand merci pour francescalus utilisateur pour éditer utilement cette question pour me faire paraître moins polie en enlevant un « merci » à la fin de celui-ci. Dieu merci, les utilisateurs comme eux sont là pour empêcher les gens de rendre les questions illisibles avec la courtoisie de tous les jours. – JoeZuntz