首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数内部不允许无堆栈python #杂注GCC诊断

函数内部不允许无堆栈python #杂注GCC诊断
EN

Stack Overflow用户
提问于 2020-02-28 04:20:35
回答 1查看 237关注 0票数 0

我有Centos6操作系统,并尝试在它上面配置无堆栈的python。https://github.com/python/cpython

我一直保持在误差以下。我主要是一个Python开发人员,对这个错误感到非常困惑。请帮帮忙。

代码语言:javascript
复制
Python/ceval.c:2035: error: #pragma GCC diagnostic not allowed inside functions
Python/ceval.c:2035: error: #pragma GCC diagnostic not allowed inside functions
Python/ceval.c:2035: error: #pragma GCC diagnostic not allowed inside functions
Python/ceval.c:2035: error: #pragma GCC diagnostic not allowed inside functions
Python/ceval.c:2035: error: #pragma GCC diagnostic not allowed inside functions
Python/ceval.c:2035: error: #pragma GCC diagnostic not allowed inside functions

相应的代码块

代码语言:javascript
复制
2011         TARGET(YIELD_FROM) {
2012             PyObject *v = POP();
2013             PyObject *receiver = TOP();
2014             int err;
2015             if (PyGen_CheckExact(receiver) || PyCoro_CheckExact(receiver)) {
2016                 STACKLESS_PROPOSE_ALL(tstate);
2017                 retval = _PyGen_Send((PyGenObject *)receiver, v);
2018                 STACKLESS_ASSERT();
2019             } else {
2020                 _Py_IDENTIFIER(send);
2021                 if (v == Py_None) {
2022                     STACKLESS_PROPOSE_METHOD(tstate, receiver, tp_iternext);
2023                     retval = Py_TYPE(receiver)->tp_iternext(receiver);
2024                     STACKLESS_ASSERT();
2025                 }
2026                 else {
2027                     STACKLESS_PROPOSE_ALL(tstate);
2028                     retval = _PyObject_CallMethodIdObjArgs(receiver, &PyId_send, v, NULL);
2029                     STACKLESS_ASSERT();
2030                 }
2031             }
2032             Py_DECREF(v);
2033 #ifdef STACKLESS
2034             if (STACKLESS_UNWINDING(retval)) {
2035                 HANDLE_UNWINDING(slp_eval_frame_yield_from, 0, retval);
2036                 receiver = TOP();
2037             }
2038 #endif
2039             if (retval == NULL) {
2040                 PyObject *val;
2041                 if (tstate->c_tracefunc != NULL
2042                         && PyErr_ExceptionMatches(PyExc_StopIteration))
2043                     call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, tstate, f);
2044                 err = _PyGen_FetchStopIterationValue(&val);
2045                 if (err < 0)
2046                     goto error;
2047                 Py_DECREF(receiver);
2048                 SET_TOP(val);
2049                 DISPATCH();
2050             }
EN

回答 1

Stack Overflow用户

发布于 2020-02-28 17:26:14

错误源于在中定义并在中使用的宏SLP_DISABLE_GCC_W_ADDRESSSLP_RESTORE_WARNINGS。似乎您使用的是低于4.6的GCC编译器版本,该版本不允许在函数中使用#pragma GCC diagnostic。除了更改代码(将编译指示移到外部)之外,您还可以选择使用较新的编译器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60441165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档