2

Cygwin で gcc を使用して、この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'

何か案は?

アップデート:

どうやらこれは、Python.h の前に windows.h をインクルードしない限り定義されていない __int64 に展開される PY_LONG_LONG が原因であると思われます。ただし、なぜそれが必要なのかわかりません。また、リンクされた記事の次のルールに違反しています。すべての標準ヘッダーが含まれます。」

windows.h をインクルードする必要を回避する方法はありますか?

4

0 に答える 0