#include <python.h>在Cygwin </python.h>下不起作用

时间:2013-06-08 23:53:20

标签: python c cygwin

尝试使用Cygwin中的gcc从this Python文档文章的开头编译示例。我的代码:

#include <Python.h>

static PyObject *
spam_system(PyObject *self, PyObject *args)
{
    const char *command;
    int sts;

    if (!PyArg_ParseTuple(args, "s", &command))
        return NULL;
    sts = system(command);
    return PyLong_FromLong(sts);
}

但是,在尝试编译时,gcc给出了以下错误:

In file included from /usr/include/Python.h:77:0,
                 from test.c:1:
/usr/include/longobject.h:77:26: error: expected '=', ',', ';', 'asm' or '__attr
ibute__' before 'PyLong_AsLongLong'
/usr/include/longobject.h:78:35: error: expected '=', ',', ';', 'asm' or '__attr
ibute__' before 'PyLong_AsUnsignedLongLong'
/usr/include/longobject.h:79:35: error: expected '=', ',', ';', 'asm' or '__attr
ibute__' before 'PyLong_AsUnsignedLongLongMask'
/usr/include/longobject.h:80:26: error: expected '=', ',', ';', 'asm' or '__attr
ibute__' before 'PyLong_AsLongLongAndOverflow'

有什么想法吗?

更新

显然这是由PY_LONG_LONG扩展到__int64引起的,除非我在Python.h之前包含了windows.h,否则它没有定义。但是,我不明白为什么这是必要的,它违反了链接文章中的以下规则:“由于Python可能会定义一些影响某些系统上标准头文件的预处理器定义,因此必须先包含Python.h包含任何标准标题。“

有没有办法避免必须包含windows.h?

0 个答案:

没有答案