Re: C++, Qt et bouquins

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: guilde
Subject: Re: C++, Qt et bouquins
Le mercredi 22 décembre, à 21h55 (+0100), Francois-Xavier KOWALSKI a écrit :
> "toto.c":
>
> #include <stdio.h>
>
> int bidon (int i, char *s)
> {
> printf("bidon %i %s\n", i, s);
> return i;
> }
>
> [...]
>
> [fxk@valentine fxk]> g++ -c toto.c
> [fxk@valentine fxk]> nm toto.o
> 00000000 ? __FRAME_BEGIN__
> 00000000 T bidon__FiPc
> 00000000 t gcc2_compiled.
>          U printf

>
> Le symbole bidon() est alors flanqué d'ordures...


Je viens de vérifier que c'est apparemment la seule incompatibilité
entre les objets C et C++ :

% cat main.c
#define bidon bidon__FiPc

int bidon(int i, char *s);

int main(void)
{
    bidon(10, "dix");
    return 0;
}
% gcc main.c toto.o -o toto
% ./toto
bidon 10 dix


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.

-- 
Edgar Bonet                         Tel :    +1 607 255-9349
LASSP -- Cornell University         Fax :    +1 607 255-6428
Clark Hall                          e-mail : edgar@???
Ithaca, NY 14853, USA               http://bonet.polycnrs-gre.fr/~edgar/