Документация Numpy C API дает эту подпись:
PyObject* PyArray_SimpleNewFromData(int nd, npy_intp* dims, int typenum, void *data)
Обратите внимание, что dim по существу имеет тип int **. Однако все примеры, которые я нашел для использования этой и подобных функций, передают тип int *, например здесь .
При передаче указателя на целое число мой код работает нормально, но компилятор жалуется на несоответствие типа указателя аргумента "dims".
PyObject *arr;
import_array();
npy_float d[] = {1, 2, 3, 4};
npy_intp dims[] = {sizeof d / sizeof *d};
arr = PyArray_SimpleNewFromData(1, dims, NPY_FLOAT, d);
Из моего понимания того, как работает функция, я считаю, что int * должен быть правильным типом, потому что это просто входной параметр, который сообщает функции о том, сколько записей имеет каждое измерение массива. Я не понимаю, почему и документация, и компилятор ожидают события int **, хотя int * работает.
Так как это правильно?