Pour traduire un programme Xcas en C++

### 12.3.1 Pour traduire un programme `Xcas` en C++

Lorsqu’un programme `Xcas` (par exemple `nomprog`) a des variables typées, on pourra le traduire en C++ et le compiler grâce à la commande `cpp` suivi du nom du programme (par exemple `cpp(nomprog)`)
Cela va créer un fichier `giac_nomprog.cpp` et un fichier `libgiac_nomfichier.so` sur le disque dur.
Attention le nom du fichier doit avoir plus qu’une lettre.
Par exemple :
`truc(n:integer):={return 2*n+1;}` puis
`cpp(truc)`
On obtient :
`1`
et cela a créé sur le disque dur le fichier `giac_truc.cpp` qui est un fichier C++ et le fichier `libgiac_truc.so` qui est le fichier C++ compilé :
Voici ce que contient `giac_truc.cpp` :

    #include <giac/giac.h>
    using namespace std;
    namespace giac {
    giac::gen truc(int n_i,const giac::context * contextptr){
    giac::makevecteur(return 2*n_i+1)
    }
    giac::gen _truc(const giac::gen & g,const giac::context * contextptr){
    return truc(g,contextptr);
    }

    const string _truc_s("truc");
    unary_function_eval __truc(0,&_truc,_truc_s);
    unary_function_ptr at_truc(&__truc,0,true);
    }

La commande `insmode(nomprog)` utilisé dans une session `Xcas` va lire le module compilé `libgiac_truc.so` sur le disque dur.
On peut alors utiliser le même nom `nomprog`) dans cette session `Xcas` mais le programme sera plus efficace grâce à la compilation.