am为Python定义了一种新类型。我想添加对这两个建筑物(Python2和Python3)的支持。
python2 setup.py build
python3 setup.py build
我创建了一个函数,将我的类型转换为字符串表示形式(在Python2中)。
PyObject *
pyfloat_str(PyObject *self)
{
char str[128];
int st;
ieee754 q = ((PyFlt*)self)->obval;
st = snprintf(str, sizeof(str), "%f", float(q));
if (st < 0) {
fprintf(stderr, "BAD\n");
}
return PyString_FromString(str);
}
但是在python3中PyString_FromString()
未定义。相反,我们有PyUnicode_FromString()
。正如我在开始时所说的,我想增加对这两个构建的支持。所以我正在寻找这样的东西。
PyObject *
pyfloat_str(PyObject *self)
{
char str[128];
int st;
ieee754 q = ((PyFlt*)self)->obval;
st = snprintf(str, sizeof(str), "%f", float(q));
if (st < 0) {
fprintf(stderr, "BAD\n");
}
#ifInvokedWithPython2Buidling
return PyString_FromString(str);
#else
return PyUnicode_FromString(str);
}
执行此操作的正确方法是什么?