я определяю новый тип для 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);
}
Как правильно это сделать?