Bonjour,
j'ai un code en C++ qui appelle du fortran. Le prototype de ma fonction fortran est :
donc, via le C++, je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void maFonctionFortran(double *, int * n)
où x est un std::vector. Je n'ai encore jamais eu de soucis avec cette syntaxe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int size = x.size(); maFonctionFortran(&x[0], &size);
Un collègue m'a dit que ce n'était pas bon car rien ne garantit que les éléments sont contigus en mémoire avec un std::vector. Tout ce que la norme garantit est un accès direct au ieme élément et que les protoypes des fonctions seront conservés (entre 2 compilo par exemple).
A-t-il raison ? J'étais persuadé que les éléments d'un std::vector étaient contigus en mémoire.
Merci d'avance de votre réponse.
Partager