• [^] # Re: Quelle simplicité!

    Posté par . En réponse au journal Debug de code Python embarqué dans du code C++. Évalué à 3.

    Il y a embarquer et embarquer... Ici, l'embarcation ne va pas beaucoup plus loin qu'un simple system("python -c 'print(\"hello world!\))'");. Là où ça commence à devenir compliqué c'est lorsqu'il faut échanger des valeurs entre le monde python et le monde C avec des difficultés de gestion de la mémoire, conversion de types, contrôle de l'environnement (recherche des bibliothèques, contexte d'exécution), etc. De plus, l'auteur a choisi de s'interfacer avec la bibliothèque C de python qui (par définition) n'offre aucune facilité pour le C++. Là où une bibliothèque spécifiquement conçue pour le C++ (telle que Boost.Python ?) offrirait très certainement plus d'automatisme ou de facilités.
    Bref, je m'abstiendrais de tirer quelconques conclusions sur cet exemple si simple.

    PS: Le commentaire ci-dessous m'a intrigué: pourquoi interrompre le traitement si l'appel à Py_SetProgramName est optionnel ?

     if (program == NULL) {
     fprintf(stderr, "Fatal error: cannot decode argv[0]\n");
     exit(1);
     }
     Py_SetProgramName(program); /* optional but recommended */