title: #include <Python.h> doesn't work under Cygwin
body: <p>Tried compiling the example from the beginning of <a href="http://docs.python.org/3/extending/extending.html" rel="nofollow">this</a> Python documentation article with gcc in Cygwin. My code:</p>
  
  <pre><code>#include &lt;Python.h&gt;
  
  static PyObject *
  spam_system(PyObject *self, PyObject *args)
  {
      const char *command;
      int sts;
  
      if (!PyArg_ParseTuple(args, "s", &amp;command))
          return NULL;
      sts = system(command);
      return PyLong_FromLong(sts);
  }
  </code></pre>
  
  <p>However, when trying to compile, gcc gives me the following error:</p>
  
  <pre><code>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'
  </code></pre>
  
  <p>Any ideas?</p>
  
  <p><strong>Update:</strong></p>
  
  <p>Apparently this is caused by PY_LONG_LONG expanding to __int64, which is not defined unless I include windows.h before Python.h. However, I don't see why that should be necessary, and it violates the following rule from the linked article: "Since Python may define some pre-processor definitions which affect the standard headers on some systems, you must include Python.h before any standard headers are included."</p>
  
  <p>Is there any way to avoid having to include windows.h?</p>