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 */
[^] # Re: Quelle simplicité!
Posté par benja . 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 ?