• [^] # Re: Pourquoi ne peux-tu pas compiler en C++ ?

    Posté par (site web personnel) . En réponse au message Accéder à une bibliothèque C++ à partir de C. Évalué à 5.

    > Le C++ est un surensemble de C.

    Justement, non. L'exemple le plus simple, c'est :

    int main () {
    int class = 0;
    return class;
    }

    qui compile en C mais pas en C++, mais il y a aussi des tas d'autres incompatibilités plus subtiles. Pour un programme relativement gros, si personne n'a fait attention à la compatibilité C++, il y a peu de chances que le programme C compile en C++.

    Pour appeler du C depuis le C++, c'est assez simple:

    extern "C" {
    #include "mon-en-tête-c.h"
    }

    (ou mieux, ajouter le 'extern "C"' dans mon-en-tête-c.h, protégé avec des #ifdef __cplusplus). Ça te demande que le .h compile en C++, mais pas forcément le .c.

    Dans l'autre sens, il faut en général ajouter des wrappers pour toutes les fonctions C++ que tu veux utiliser, et les déclarer 'extern "C"'.