---Reply to mail from <Francois-Xavier KOWALSKI>
> La prochaine fois, je vérifierai que les réponses ne sont pas déjà
> arrivée sur la liste avant de m'emballer & d'en faire une tartine...
Pourquoi ? Ton explication est tres bien. Je te remercie beaucoup pour
avoir pris la peine de pondre ce petit exemple simple mais efficace.
Et puis, j'aime bien les tartines...
---Reply to mail from <Edgar Bonet>
> Oui, je sais, le coup du #define n'est pas très beau, mais je ne connais
> pas de solution simple si on ne veut pas modifier l'objet C++. J'avais
> ainsi eu une fois l'occasion de jouer aux #define pour pouvoir faire
> collaborer des compilos C et Fortran. L'un d'entre eux ayant l'habitude
> d'ajouter des soulignés (_) aux noms des symboles.
Beaucoup de compilateurs Fortran (mais pas tous) ajoute le _ a la fin des
fonctions externes. Ayant developpe des librairies C pour des programmes
Fortran et C, j'ai ete confronte au probleme.
Apres avoir fait un premier jet avec des #define, j'ai fini par faire ceci :
/* Code de la fonction ExempleDeFonction() */
void exempledefonction_(int *a, int *b)
{
/* Ici on ecrit la fonction */
}
void ExempleDeFonction(int *a, int *b)
{
exempledefonction(a, b);
}
/* fin du code */
Comme ca, ca permet d'appeler la fonction depuis n'importe quel programme
(Fortran ou C). Notez que les compilos Fortran passent tout en minuscule
(et tout par pointeur, egalement).
Appel depuis le Fortran :
integer*4 a, b
call ExempleDeFonction(a, b) ! La casse n'a pas d'importance. La
! fonction appelee sera
! exempledefonction_()
Appel depuis le C :
int a, b;
ExempleDeFonction(&a, &b)
A plus,
--
Frederic
"Nous vivons une epoque moderne, le progres fait rage..." (Philippe Meyer)