回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图编译一个名为<a href="https://github.com/doukremt/distance/tree/master/cdistance" rel="nofollow noreferrer">distance</a>的python模块,其中c“python设置.pyinstall--with-c“在windows 10上使用msvc 2017,我遇到了这个错误</p>
<blockquote>
<p>Cdistance / distance.c (647): error C2099: initializer is not a
constant</p>
<p>Cdistance / distance.c (689): error C2099: initializer is not a
constant</p>
<p>Error: command 'C: \ Program Files (x86) \ Microsoft Visual Studio \
2017 \ BuildTools \ VC \ Tools \ MSVC \ 14.10.25017 \ bin \ HostX64 \
x64 \ cl .exe 'failed with exit status 2</p>
</blockquote>
<p>这是第647行的代码</p>
<pre><code> 646 PyTypeObject IFastComp_Type = {
647 PyVarObject_HEAD_INIT(&PyType_Type, 0)
648 "distance.ifast_comp", /* tp_name */
649 sizeof(ItorState), /* tp_basicsize */
650 0, /* tp_itemsize */
(destructor)itor_dealloc, /* tp_dealloc */
0, /* tp_print */
0, /* tp_getattr */
0, /* tp_setattr */
0, /* tp_reserved */
0, /* tp_repr */
0, /* tp_as_number */
0, /* tp_as_sequence */
0, /* tp_as_mapping */
0, /* tp_hash */
0, /* tp_call */
0, /* tp_str */
0, /* tp_getattro */
0, /* tp_setattro */
0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT, /* tp_flags */
ifast_comp_doc, /* tp_doc */
0, /* tp_traverse */
0, /* tp_clear */
0, /* tp_richcompare */
0, /* tp_weaklistoffset */
PyObject_SelfIter, /* tp_iter */
(iternextfunc)ifastcomp_next, /* tp_iternext */
0, /* tp_methods */
0, /* tp_members */
0, /* tp_getset */
0, /* tp_base */
0, /* tp_dict */
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
0, /* tp_init */
PyType_GenericAlloc, /* tp_alloc */
ifastcomp_new, /* tp_new */
};
</code></pre>
<p>第689行是另一个类似strucure</p>
^{pr2}$
<p>两者在同一页引用如下</p>
<pre><code>762 if (PyType_Ready(&IFastComp_Type) != 0 || PyType_Ready(&ILevenshtein_Type)!= 0)
763 #if PY_MAJOR_VERSION >= 3
return NULL;
#else
return;
#endif
Py_INCREF((PyObject *)&IFastComp_Type);
Py_INCREF((PyObject *)&ILevenshtein_Type);
</code></pre>
<p>谢谢</p>