Je dois évaluer une expression Python de C++. Ce code semble fonctionner:Pourquoi PyRun_String n'évalue-t-il pas les littéraux booléens?
PyObject * dict = PyDict_New();
PyObject * val = PyRun_String(expression, Py_eval_input, dict, 0);
Py_DECREF(dict);
Malheureusement, il échoue horriblement si l'expression est "vrai" de "False" (qui est, val est 0 et PyErr_Occurred() retourne true). Qu'est-ce que je fais mal? Ne devraient-ils pas évaluer respectivement Py_True et Py_False?
Que montre PyErr_Print() lorsque vous l'appelez après l'échec? –
Je sais, j'aurais dû le faire avant, mais je ne peux pas appeler PyErr_Print() dans mon application pour un certain nombre de raisons. Quoi qu'il en soit, je l'ai reproduit dans un fichier isolé, et voici ce que j'ai obtenu: NameError: le nom 'False' n'est pas défini !! On dirait que ce littéral n'est pas disponible chez C ...! – UncleZeiv
Puisque cela répond à votre question, vous devriez l'afficher comme réponse. –