Numpy CAPI PyArray_New Visual Studio 警告 C4055
Numpy CAPI PyArray_New Visual Studio Warning C4055
我正在将一个计算 C 程序转换为 Python,使用 PyArray_SimpleNew() 在 C 中创建一个 numpy 数组。但是,我收到警告
C4055:: from data pointer 'void *' to function pointer 'PyObject *(__cdecl *)
相关代码摘录如下:
PyObject* myArray=NULL;
npy_int nd=1;
npy_int dims[1]={10};
myArray=PyArray_SimpleNew(nd,dims,NPY_UINT64)
警告发生在最后一行。经过一些 google 搜索,它表明这是由于 Numpy 库中违反 C 标准的不正确实现。
所以我的问题是,
1.Could 谁能解释一下这里发生了什么?特别是 "void*" 是从哪里来的?
2.Does 这个警告在这个用例中真的很重要吗?压制它安全吗?
一些参考:
好的 所以在深入研究 Python 的 PyArray_SimpleNew() 源代码后,似乎 python 使用了一个嵌套宏,在场景。因此,编译器看到的是指向函数的指针,而不是 PyObject* 类型的正确 return 值。这是非标准用途,您只能手动抑制警告
我正在将一个计算 C 程序转换为 Python,使用 PyArray_SimpleNew() 在 C 中创建一个 numpy 数组。但是,我收到警告
C4055:: from data pointer 'void *' to function pointer 'PyObject *(__cdecl *)
相关代码摘录如下:
PyObject* myArray=NULL;
npy_int nd=1;
npy_int dims[1]={10};
myArray=PyArray_SimpleNew(nd,dims,NPY_UINT64)
警告发生在最后一行。经过一些 google 搜索,它表明这是由于 Numpy 库中违反 C 标准的不正确实现。
所以我的问题是,
1.Could 谁能解释一下这里发生了什么?特别是 "void*" 是从哪里来的? 2.Does 这个警告在这个用例中真的很重要吗?压制它安全吗?
一些参考:
好的 所以在深入研究 Python 的 PyArray_SimpleNew() 源代码后,似乎 python 使用了一个嵌套宏,在场景。因此,编译器看到的是指向函数的指针,而不是 PyObject* 类型的正确 return 值。这是非标准用途,您只能手动抑制警告