error C2275: “XXX”: 将此类型用作表达式非法
这个错误是由于c的编译器要求将变量的申明放在一个函数块的头部
解决的办法就是把变量的申明全部放在变量的生存块的开始。
例如在修改python源码重新编译时:
编译后出现错误:
解决方法:
只需要把变量声明的语句放在函数快的开头即可。
其他内容:
另外还有两个和全局锁有关的宏,Py_BEGIN_ALLOW_THREADS 和 Py_END_ALLOW_THREADS。这两个宏是为了在较长时间的C函数调用前,临时释放全局锁,完成后重新获取全局锁,以避免阻塞其他python的线程继续运行。这两个宏可以这样调用
// 调用python的API函数处理
......
Py_BEGIN_ALLOW_THREADS
// 调用需要长时间的C函数
......
Py_END_ALLOW_THREADS
// 调用python的API函数处理
......