diff --git a/Doc/api/utilities.tex b/Doc/api/utilities.tex
index ab31f4e..a0f7a44 100644
--- a/Doc/api/utilities.tex
+++ b/Doc/api/utilities.tex
@@ -496,7 +496,7 @@
   \item[\samp{l} (integer) {[long int]}]
   Convert a Python integer to a C \ctype{long int}.
 
-  \item[\samp{L} (integer) {[LONG_LONG]}]
+  \item[\samp{L} (integer) {[PY_LONG_LONG]}]
   Convert a Python integer to a C \ctype{long long}.  This format is
   only available on platforms that support \ctype{long long} (or
   \ctype{_int64} on Windows).
diff --git a/Include/longobject.h b/Include/longobject.h
index 1ac213c..63ca113 100644
--- a/Include/longobject.h
+++ b/Include/longobject.h
@@ -33,10 +33,10 @@
 PyAPI_FUNC(void *) PyLong_AsVoidPtr(PyObject *);
 
 #ifdef HAVE_LONG_LONG
-PyAPI_FUNC(PyObject *) PyLong_FromLongLong(LONG_LONG);
-PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLongLong(unsigned LONG_LONG);
-PyAPI_FUNC(LONG_LONG) PyLong_AsLongLong(PyObject *);
-PyAPI_FUNC(unsigned LONG_LONG) PyLong_AsUnsignedLongLong(PyObject *);
+PyAPI_FUNC(PyObject *) PyLong_FromLongLong(PY_LONG_LONG);
+PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLongLong(unsigned PY_LONG_LONG);
+PyAPI_FUNC(PY_LONG_LONG) PyLong_AsLongLong(PyObject *);
+PyAPI_FUNC(unsigned PY_LONG_LONG) PyLong_AsUnsignedLongLong(PyObject *);
 #endif /* HAVE_LONG_LONG */
 
 PyAPI_FUNC(PyObject *) PyLong_FromString(char *, char **, int);
diff --git a/Include/pyport.h b/Include/pyport.h
index cc003a6..b68a3b4 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -27,7 +27,7 @@
 
 HAVE_LONG_LONG
 Meaning:  The compiler supports the C type "long long"
-Used in:  LONG_LONG
+Used in:  PY_LONG_LONG
 
 **************************************************************************/
 
@@ -55,8 +55,8 @@
  */
 
 #ifdef HAVE_LONG_LONG
-#ifndef LONG_LONG
-#define LONG_LONG long long
+#ifndef PY_LONG_LONG
+#define PY_LONG_LONG long long
 #endif
 #endif /* HAVE_LONG_LONG */
 
@@ -78,8 +78,8 @@
 typedef long		Py_intptr_t;
 
 #elif defined(HAVE_LONG_LONG) && (SIZEOF_VOID_P <= SIZEOF_LONG_LONG)
-typedef unsigned LONG_LONG	Py_uintptr_t;
-typedef LONG_LONG		Py_intptr_t;
+typedef unsigned PY_LONG_LONG	Py_uintptr_t;
+typedef PY_LONG_LONG		Py_intptr_t;
 
 #else
 #   error "Python needs a typedef for Py_uintptr_t in pyport.h."
diff --git a/Misc/NEWS b/Misc/NEWS
index 0a674d2..15a0daf 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -101,6 +101,8 @@
 C API
 -----
 
+- LONG_LONG was renamed to PY_LONG_LONG.
+
 - Added PyObject_SelfIter() to fill the tp_iter slot for the
   typical case where the method returns its self argument.
 
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index 4c3c2aa..c08dbb7 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -56,7 +56,7 @@
 	CHECK_SIZEOF(SIZEOF_VOID_P, void*);
 	CHECK_SIZEOF(SIZEOF_TIME_T, time_t);
 #ifdef HAVE_LONG_LONG
-	CHECK_SIZEOF(SIZEOF_LONG_LONG, LONG_LONG);
+	CHECK_SIZEOF(SIZEOF_LONG_LONG, PY_LONG_LONG);
 #endif
 
 #undef CHECK_SIZEOF
@@ -172,7 +172,7 @@
 
    Note that the meat of the test is contained in testcapi_long.h.
    This is revolting, but delicate code duplication is worse:  "almost
-   exactly the same" code is needed to test LONG_LONG, but the ubiquitous
+   exactly the same" code is needed to test PY_LONG_LONG, but the ubiquitous
    dependence on type names makes it impossible to use a parameterized
    function.  A giant macro would be even worse than this.  A C++ template
    would be perfect.
@@ -221,7 +221,7 @@
 }
 
 #define TESTNAME	test_longlong_api_inner
-#define TYPENAME	LONG_LONG
+#define TYPENAME	PY_LONG_LONG
 #define F_S_TO_PY	PyLong_FromLongLong
 #define F_PY_TO_S	PyLong_AsLongLong
 #define F_U_TO_PY	PyLong_FromUnsignedLongLong
@@ -242,7 +242,7 @@
 #undef F_U_TO_PY
 #undef F_PY_TO_U
 
-/* Test the L code for PyArg_ParseTuple.  This should deliver a LONG_LONG
+/* Test the L code for PyArg_ParseTuple.  This should deliver a PY_LONG_LONG
    for both long and int arguments.  The test may leak a little memory if
    it fails.
 */
@@ -250,7 +250,7 @@
 test_L_code(PyObject *self)
 {
 	PyObject *tuple, *num;
-	LONG_LONG value;
+	PY_LONG_LONG value;
 
         tuple = PyTuple_New(1);
         if (tuple == NULL)
diff --git a/Modules/addrinfo.h b/Modules/addrinfo.h
index 7f85d81..d781c0d 100644
--- a/Modules/addrinfo.h
+++ b/Modules/addrinfo.h
@@ -142,7 +142,7 @@
  */
 #define _SS_MAXSIZE	128
 #ifdef HAVE_LONG_LONG
-#define _SS_ALIGNSIZE	(sizeof(LONG_LONG))
+#define _SS_ALIGNSIZE	(sizeof(PY_LONG_LONG))
 #else
 #define _SS_ALIGNSIZE	(sizeof(double))
 #endif
@@ -159,7 +159,7 @@
 #endif
 	char	__ss_pad1[_SS_PAD1SIZE];
 #ifdef HAVE_LONG_LONG
-	LONG_LONG __ss_align;	/* force desired structure storage alignment */
+	PY_LONG_LONG __ss_align;	/* force desired structure storage alignment */
 #else
 	double __ss_align;	/* force desired structure storage alignment */
 #endif
diff --git a/Modules/bz2module.c b/Modules/bz2module.c
index 114070f..5ab3f99 100644
--- a/Modules/bz2module.c
+++ b/Modules/bz2module.c
@@ -36,7 +36,7 @@
 	(((long)bzs->total_out_hi32 << 32) + bzs->total_out_lo32)
 #elif SIZEOF_LONG_LONG >= 8
 #define BZS_TOTAL_OUT(bzs) \
-	(((LONG_LONG)bzs->total_out_hi32 << 32) + bzs->total_out_lo32)
+	(((PY_LONG_LONG)bzs->total_out_hi32 << 32) + bzs->total_out_lo32)
 #else
 #define BZS_TOTAL_OUT(bzs) \
 	bzs->total_out_lo32;
@@ -1490,7 +1490,7 @@
 	char *data;
 	int datasize;
 	int bufsize = SMALLCHUNK;
-	LONG_LONG totalout;
+	PY_LONG_LONG totalout;
 	PyObject *ret = NULL;
 	bz_stream *bzs = &self->bzs;
 	int bzerror;
@@ -1562,7 +1562,7 @@
 	int bufsize = SMALLCHUNK;
 	PyObject *ret = NULL;
 	bz_stream *bzs = &self->bzs;
-	LONG_LONG totalout;
+	PY_LONG_LONG totalout;
 	int bzerror;
 
 	ACQUIRE_LOCK(self);
@@ -1768,7 +1768,7 @@
 	char *data;
 	int datasize;
 	int bufsize = SMALLCHUNK;
-	LONG_LONG totalout;
+	PY_LONG_LONG totalout;
 	PyObject *ret = NULL;
 	bz_stream *bzs = &self->bzs;
 	int bzerror;
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index ab4992e..9bf52f3 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -891,7 +891,7 @@
 {
 	PyObject *fval,*ival;
 #if SIZEOF_TIME_T > SIZEOF_LONG
-	ival = PyLong_FromLongLong((LONG_LONG)sec);
+	ival = PyLong_FromLongLong((PY_LONG_LONG)sec);
 #else
 	ival = PyInt_FromLong((long)sec);
 #endif
@@ -918,13 +918,13 @@
         PyStructSequence_SET_ITEM(v, 0, PyInt_FromLong((long)st.st_mode));
 #ifdef HAVE_LARGEFILE_SUPPORT
         PyStructSequence_SET_ITEM(v, 1,
-				  PyLong_FromLongLong((LONG_LONG)st.st_ino));
+				  PyLong_FromLongLong((PY_LONG_LONG)st.st_ino));
 #else
         PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long)st.st_ino));
 #endif
 #if defined(HAVE_LONG_LONG) && !defined(MS_WINDOWS)
         PyStructSequence_SET_ITEM(v, 2,
-				  PyLong_FromLongLong((LONG_LONG)st.st_dev));
+				  PyLong_FromLongLong((PY_LONG_LONG)st.st_dev));
 #else
         PyStructSequence_SET_ITEM(v, 2, PyInt_FromLong((long)st.st_dev));
 #endif
@@ -933,7 +933,7 @@
         PyStructSequence_SET_ITEM(v, 5, PyInt_FromLong((long)st.st_gid));
 #ifdef HAVE_LARGEFILE_SUPPORT
         PyStructSequence_SET_ITEM(v, 6,
-				  PyLong_FromLongLong((LONG_LONG)st.st_size));
+				  PyLong_FromLongLong((PY_LONG_LONG)st.st_size));
 #else
         PyStructSequence_SET_ITEM(v, 6, PyInt_FromLong(st.st_size));
 #endif
@@ -2376,7 +2376,7 @@
 #if SIZEOF_LONG == SIZEOF_VOID_P
 		return Py_BuildValue("l", (long) spawnval);
 #else
-		return Py_BuildValue("L", (LONG_LONG) spawnval);
+		return Py_BuildValue("L", (PY_LONG_LONG) spawnval);
 #endif
 }
 
@@ -2517,7 +2517,7 @@
 #if SIZEOF_LONG == SIZEOF_VOID_P
 		res = Py_BuildValue("l", (long) spawnval);
 #else
-		res = Py_BuildValue("L", (LONG_LONG) spawnval);
+		res = Py_BuildValue("L", (PY_LONG_LONG) spawnval);
 #endif
 
   fail_2:
@@ -5084,7 +5084,7 @@
 {
 	int fd, how;
 #if defined(MS_WIN64) || defined(MS_WINDOWS)
-	LONG_LONG pos, res;
+	PY_LONG_LONG pos, res;
 #else
 	off_t pos, res;
 #endif
@@ -5816,17 +5816,17 @@
         PyStructSequence_SET_ITEM(v, 0, PyInt_FromLong((long) st.f_bsize));
         PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long) st.f_frsize));
         PyStructSequence_SET_ITEM(v, 2,
-			       PyLong_FromLongLong((LONG_LONG) st.f_blocks));
+			       PyLong_FromLongLong((PY_LONG_LONG) st.f_blocks));
         PyStructSequence_SET_ITEM(v, 3,
-			       PyLong_FromLongLong((LONG_LONG) st.f_bfree));
+			       PyLong_FromLongLong((PY_LONG_LONG) st.f_bfree));
         PyStructSequence_SET_ITEM(v, 4,
-			       PyLong_FromLongLong((LONG_LONG) st.f_bavail));
+			       PyLong_FromLongLong((PY_LONG_LONG) st.f_bavail));
         PyStructSequence_SET_ITEM(v, 5,
-			       PyLong_FromLongLong((LONG_LONG) st.f_files));
+			       PyLong_FromLongLong((PY_LONG_LONG) st.f_files));
         PyStructSequence_SET_ITEM(v, 6,
-			       PyLong_FromLongLong((LONG_LONG) st.f_ffree));
+			       PyLong_FromLongLong((PY_LONG_LONG) st.f_ffree));
         PyStructSequence_SET_ITEM(v, 7,
-			       PyLong_FromLongLong((LONG_LONG) st.f_favail));
+			       PyLong_FromLongLong((PY_LONG_LONG) st.f_favail));
         PyStructSequence_SET_ITEM(v, 8, PyInt_FromLong((long) st.f_flag));
         PyStructSequence_SET_ITEM(v, 9, PyInt_FromLong((long) st.f_namemax));
 #endif
diff --git a/Modules/resource.c b/Modules/resource.c
index 8653f03..003599d 100644
--- a/Modules/resource.c
+++ b/Modules/resource.c
@@ -128,8 +128,8 @@
 #if defined(HAVE_LONG_LONG)
 	if (sizeof(rl.rlim_cur) > sizeof(long)) {
 		return Py_BuildValue("LL",
-				     (LONG_LONG) rl.rlim_cur,
-				     (LONG_LONG) rl.rlim_max);
+				     (PY_LONG_LONG) rl.rlim_cur,
+				     (PY_LONG_LONG) rl.rlim_max);
 	}
 #endif
 	return Py_BuildValue("ll", (long) rl.rlim_cur, (long) rl.rlim_max);
@@ -292,7 +292,7 @@
 
 #if defined(HAVE_LONG_LONG)
 	if (sizeof(RLIM_INFINITY) > sizeof(long)) {
-		v = PyLong_FromLongLong((LONG_LONG) RLIM_INFINITY);
+		v = PyLong_FromLongLong((PY_LONG_LONG) RLIM_INFINITY);
 	} else 
 #endif
 	{
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 2b8e3ea..9d8d614 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -1437,7 +1437,7 @@
 #if SIZEOF_SOCKET_T <= SIZEOF_LONG
 	return PyInt_FromLong((long) s->sock_fd);
 #else
-	return PyLong_FromLongLong((LONG_LONG)s->sock_fd);
+	return PyLong_FromLongLong((PY_LONG_LONG)s->sock_fd);
 #endif
 }
 
diff --git a/Modules/structmodule.c b/Modules/structmodule.c
index e4e1eb5..22f1c54 100644
--- a/Modules/structmodule.c
+++ b/Modules/structmodule.c
@@ -68,8 +68,8 @@
 /* We can't support q and Q in native mode unless the compiler does;
    in std mode, they're 8 bytes on all platforms. */
 #ifdef HAVE_LONG_LONG
-typedef struct { char c; LONG_LONG x; } s_long_long;
-#define LONG_LONG_ALIGN (sizeof(s_long_long) - sizeof(LONG_LONG))
+typedef struct { char c; PY_LONG_LONG x; } s_long_long;
+#define LONG_LONG_ALIGN (sizeof(s_long_long) - sizeof(PY_LONG_LONG))
 #endif
 
 #define STRINGIFY(x)    #x
@@ -146,9 +146,9 @@
 /* Same, but handling native long long. */
 
 static int
-get_longlong(PyObject *v, LONG_LONG *p)
+get_longlong(PyObject *v, PY_LONG_LONG *p)
 {
-	LONG_LONG x;
+	PY_LONG_LONG x;
 
 	v = get_pylong(v);
 	if (v == NULL)
@@ -156,7 +156,7 @@
 	assert(PyLong_Check(v));
 	x = PyLong_AsLongLong(v);
 	Py_DECREF(v);
-	if (x == (LONG_LONG)-1 && PyErr_Occurred())
+	if (x == (PY_LONG_LONG)-1 && PyErr_Occurred())
 		return -1;
 	*p = x;
 	return 0;
@@ -165,9 +165,9 @@
 /* Same, but handling native unsigned long long. */
 
 static int
-get_ulonglong(PyObject *v, unsigned LONG_LONG *p)
+get_ulonglong(PyObject *v, unsigned PY_LONG_LONG *p)
 {
-	unsigned LONG_LONG x;
+	unsigned PY_LONG_LONG x;
 
 	v = get_pylong(v);
 	if (v == NULL)
@@ -175,7 +175,7 @@
 	assert(PyLong_Check(v));
 	x = PyLong_AsUnsignedLongLong(v);
 	Py_DECREF(v);
-	if (x == (unsigned LONG_LONG)-1 && PyErr_Occurred())
+	if (x == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())
 		return -1;
 	*p = x;
 	return 0;
@@ -315,7 +315,7 @@
 static PyObject *
 nu_longlong(const char *p, const formatdef *f)
 {
-	LONG_LONG x;
+	PY_LONG_LONG x;
 	memcpy((char *)&x, p, sizeof x);
 	return PyLong_FromLongLong(x);
 }
@@ -323,7 +323,7 @@
 static PyObject *
 nu_ulonglong(const char *p, const formatdef *f)
 {
-	unsigned LONG_LONG x;
+	unsigned PY_LONG_LONG x;
 	memcpy((char *)&x, p, sizeof x);
 	return PyLong_FromUnsignedLongLong(x);
 }
@@ -480,7 +480,7 @@
 static int
 np_longlong(char *p, PyObject *v, const formatdef *f)
 {
-	LONG_LONG x;
+	PY_LONG_LONG x;
 	if (get_longlong(v, &x) < 0)
 		return -1;
 	memcpy(p, (char *)&x, sizeof x);
@@ -490,7 +490,7 @@
 static int
 np_ulonglong(char *p, PyObject *v, const formatdef *f)
 {
-	unsigned LONG_LONG x;
+	unsigned PY_LONG_LONG x;
 	if (get_ulonglong(v, &x) < 0)
 		return -1;
 	memcpy(p, (char *)&x, sizeof x);
@@ -556,8 +556,8 @@
 	{'d',	sizeof(double),	DOUBLE_ALIGN,	nu_double,	np_double},
 	{'P',	sizeof(void *),	VOID_P_ALIGN,	nu_void_p,	np_void_p},
 #ifdef HAVE_LONG_LONG
-	{'q',	sizeof(LONG_LONG), LONG_LONG_ALIGN, nu_longlong, np_longlong},
-	{'Q',	sizeof(LONG_LONG), LONG_LONG_ALIGN, nu_ulonglong,np_ulonglong},
+	{'q',	sizeof(PY_LONG_LONG), LONG_LONG_ALIGN, nu_longlong, np_longlong},
+	{'Q',	sizeof(PY_LONG_LONG), LONG_LONG_ALIGN, nu_ulonglong,np_ulonglong},
 #endif
 	{0}
 };
diff --git a/Objects/longobject.c b/Objects/longobject.c
index 446affb..e02bce4 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -641,12 +641,12 @@
 #   error "PyLong_FromVoidPtr: sizeof(void*) > sizeof(long), but no long long"
 #endif
 #if SIZEOF_LONG_LONG < SIZEOF_VOID_P
-#   error "PyLong_FromVoidPtr: sizeof(LONG_LONG) < sizeof(void*)"
+#   error "PyLong_FromVoidPtr: sizeof(PY_LONG_LONG) < sizeof(void*)"
 #endif
 	/* optimize null pointers */
 	if (p == NULL)
 		return PyInt_FromLong(0);
-	return PyLong_FromLongLong((LONG_LONG)p);
+	return PyLong_FromLongLong((PY_LONG_LONG)p);
 
 #endif /* SIZEOF_VOID_P <= SIZEOF_LONG */
 }
@@ -673,9 +673,9 @@
 #   error "PyLong_AsVoidPtr: sizeof(void*) > sizeof(long), but no long long"
 #endif
 #if SIZEOF_LONG_LONG < SIZEOF_VOID_P
-#   error "PyLong_AsVoidPtr: sizeof(LONG_LONG) < sizeof(void*)"
+#   error "PyLong_AsVoidPtr: sizeof(PY_LONG_LONG) < sizeof(void*)"
 #endif
-	LONG_LONG x;
+	PY_LONG_LONG x;
 
 	if (PyInt_Check(vv))
 		x = PyInt_AS_LONG(vv);
@@ -691,43 +691,43 @@
 
 #ifdef HAVE_LONG_LONG
 
-/* Initial LONG_LONG support by Chris Herborth (chrish@qnx.com), later
+/* Initial PY_LONG_LONG support by Chris Herborth (chrish@qnx.com), later
  * rewritten to use the newer PyLong_{As,From}ByteArray API.
  */
 
 #define IS_LITTLE_ENDIAN (int)*(unsigned char*)&one
 
-/* Create a new long int object from a C LONG_LONG int. */
+/* Create a new long int object from a C PY_LONG_LONG int. */
 
 PyObject *
-PyLong_FromLongLong(LONG_LONG ival)
+PyLong_FromLongLong(PY_LONG_LONG ival)
 {
-	LONG_LONG bytes = ival;
+	PY_LONG_LONG bytes = ival;
 	int one = 1;
 	return _PyLong_FromByteArray(
 			(unsigned char *)&bytes,
 			SIZEOF_LONG_LONG, IS_LITTLE_ENDIAN, 1);
 }
 
-/* Create a new long int object from a C unsigned LONG_LONG int. */
+/* Create a new long int object from a C unsigned PY_LONG_LONG int. */
 
 PyObject *
-PyLong_FromUnsignedLongLong(unsigned LONG_LONG ival)
+PyLong_FromUnsignedLongLong(unsigned PY_LONG_LONG ival)
 {
-	unsigned LONG_LONG bytes = ival;
+	unsigned PY_LONG_LONG bytes = ival;
 	int one = 1;
 	return _PyLong_FromByteArray(
 			(unsigned char *)&bytes,
 			SIZEOF_LONG_LONG, IS_LITTLE_ENDIAN, 0);
 }
 
-/* Get a C LONG_LONG int from a long int object.
+/* Get a C PY_LONG_LONG int from a long int object.
    Return -1 and set an error if overflow occurs. */
 
-LONG_LONG
+PY_LONG_LONG
 PyLong_AsLongLong(PyObject *vv)
 {
-	LONG_LONG bytes;
+	PY_LONG_LONG bytes;
 	int one = 1;
 	int res;
 
@@ -737,7 +737,7 @@
 	}
 	if (!PyLong_Check(vv)) {
 		if (PyInt_Check(vv))
-			return (LONG_LONG)PyInt_AsLong(vv);
+			return (PY_LONG_LONG)PyInt_AsLong(vv);
 		PyErr_BadInternalCall();
 		return -1;
 	}
@@ -746,20 +746,20 @@
 			(PyLongObject *)vv, (unsigned char *)&bytes,
 			SIZEOF_LONG_LONG, IS_LITTLE_ENDIAN, 1);
 
-	/* Plan 9 can't handle LONG_LONG in ? : expressions */
+	/* Plan 9 can't handle PY_LONG_LONG in ? : expressions */
 	if (res < 0)
-		return (LONG_LONG)-1;
+		return (PY_LONG_LONG)-1;
 	else
 		return bytes;
 }
 
-/* Get a C unsigned LONG_LONG int from a long int object.
+/* Get a C unsigned PY_LONG_LONG int from a long int object.
    Return -1 and set an error if overflow occurs. */
 
-unsigned LONG_LONG
+unsigned PY_LONG_LONG
 PyLong_AsUnsignedLongLong(PyObject *vv)
 {
-	unsigned LONG_LONG bytes;
+	unsigned PY_LONG_LONG bytes;
 	int one = 1;
 	int res;
 
@@ -772,9 +772,9 @@
 			(PyLongObject *)vv, (unsigned char *)&bytes,
 			SIZEOF_LONG_LONG, IS_LITTLE_ENDIAN, 0);
 
-	/* Plan 9 can't handle LONG_LONG in ? : expressions */
+	/* Plan 9 can't handle PY_LONG_LONG in ? : expressions */
 	if (res < 0)
-		return (unsigned LONG_LONG)res;
+		return (unsigned PY_LONG_LONG)res;
 	else
 		return bytes;
 }
diff --git a/PC/pyconfig.h b/PC/pyconfig.h
index 0e7912e..5653801 100644
--- a/PC/pyconfig.h
+++ b/PC/pyconfig.h
@@ -167,7 +167,7 @@
 
 #define COMPILER "[gcc]"
 #define hypot _hypot
-#define LONG_LONG long long
+#define PY_LONG_LONG long long
 #endif /* GNUC */
 
 /* ------------------------------------------------------------------------*/
@@ -191,8 +191,8 @@
 
 /* 64 bit ints are usually spelt __int64 unless compiler has overridden */
 #define HAVE_LONG_LONG 1
-#ifndef LONG_LONG
-#	define LONG_LONG __int64
+#ifndef PY_LONG_LONG
+#	define PY_LONG_LONG __int64
 #endif
 
 /* For Windows the Python core is in a DLL by default.  Test
@@ -237,7 +237,7 @@
 #	define SIZEOF_FPOS_T 8
 #	define SIZEOF_HKEY 8
 /* configure.in defines HAVE_LARGEFILE_SUPPORT iff HAVE_LONG_LONG,
-   sizeof(off_t) > sizeof(long), and sizeof(LONG_LONG) >= sizeof(off_t).
+   sizeof(off_t) > sizeof(long), and sizeof(PY_LONG_LONG) >= sizeof(off_t).
    On Win64 the second condition is not true, but if fpos_t replaces off_t
    then this is true. The uses of HAVE_LARGEFILE_SUPPORT imply that Win64
    should define this. */
diff --git a/Python/getargs.c b/Python/getargs.c
index 02897f3..1f37e41 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -550,10 +550,10 @@
 	}
 	
 #ifdef HAVE_LONG_LONG
-	case 'L': {/* LONG_LONG */
-		LONG_LONG *p = va_arg( *p_va, LONG_LONG * );
-		LONG_LONG ival = PyLong_AsLongLong( arg );
-		if( ival == (LONG_LONG)-1 && PyErr_Occurred() ) {
+	case 'L': {/* PY_LONG_LONG */
+		PY_LONG_LONG *p = va_arg( *p_va, PY_LONG_LONG * );
+		PY_LONG_LONG ival = PyLong_AsLongLong( arg );
+		if( ival == (PY_LONG_LONG)-1 && PyErr_Occurred() ) {
 			return converterr("long<L>", arg, msgbuf, bufsize);
 		} else {
 			*p = ival;
@@ -1320,9 +1320,9 @@
 		}
 	
 #ifdef HAVE_LONG_LONG
-	case 'L': /* LONG_LONG int */
+	case 'L': /* PY_LONG_LONG int */
 		{
-			(void) va_arg(*p_va, LONG_LONG *);
+			(void) va_arg(*p_va, PY_LONG_LONG *);
 			break;
 		}
 #endif
diff --git a/Python/modsupport.c b/Python/modsupport.c
index 41e0c82..9725a1b 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -291,7 +291,7 @@
 
 #ifdef HAVE_LONG_LONG
 		case 'L':
-			return PyLong_FromLongLong((LONG_LONG)va_arg(*p_va, LONG_LONG));
+			return PyLong_FromLongLong((PY_LONG_LONG)va_arg(*p_va, PY_LONG_LONG));
 #endif
 #ifdef Py_USING_UNICODE
 		case 'u':
