### 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.