0

メインからフロートxがあるとしましょう

import progC
def main():
     x = 3
     y=progC(x)
     print y

if __name__ == __main__
     main()

#include <Python.h>

static PyObject* py_bracket(PyObject* self, float x){
    x = x+5;
    return Py_BuildValue("d",x);
}

問題は、CプログラムのfloatxがPythonから3番ではなく0を受け取っていることです。

4

2 に答える 2

0

int私の意見では、の代わりにを使用することで問題を解決できると思いfloatます。Python変数はデフォルトで12バイトのメモリを保持し、「Cfloat」は4のみを保持します。2番目のオプションは、タイプが必須PyTypeObject PyFloat_Typeであることを指定するを使用しています。float

于 2011-04-30T14:32:41.573 に答える
0

これを試して:

static PyObject* py_bracket(PyObject* self, PyObject* args){
    float x;
    if (!PyArg_ParseTuple(args, "f", &x))
        return NULL;
    x = x+5;
    return Py_BuildValue("f",x);
}
于 2011-04-30T14:34:18.933 に答える