diff --git a/Objects/abstract.c b/Objects/abstract.c
index 1d99019..96b5fe8 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -298,8 +298,6 @@
 PyObject *
 PyNumber_Or(PyObject *v, PyObject *w)
 {
-        extern int PyNumber_Coerce();
-
 	BINOP(v, w, "__or__", "__ror__", PyNumber_Or);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
@@ -319,8 +317,6 @@
 PyObject *
 PyNumber_Xor(PyObject *v, PyObject *w)
 {
-        extern int PyNumber_Coerce();
-
 	BINOP(v, w, "__xor__", "__rxor__", PyNumber_Xor);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
@@ -1391,25 +1387,11 @@
 }
 
 PyObject *
-#ifdef HAVE_STDARG_PROTOTYPES
-/* VARARGS 2 */
 PyObject_CallFunction(PyObject *callable, char *format, ...)
-#else
-/* VARARGS */
-	PyObject_CallFunction(va_alist) va_dcl
-#endif
 {
 	va_list va;
 	PyObject *args, *retval;
-#ifdef HAVE_STDARG_PROTOTYPES
 	va_start(va, format);
-#else
-	PyObject *callable;
-	char *format;
-	va_start(va);
-	callable = va_arg(va, PyObject *);
-	format   = va_arg(va, char *);
-#endif
 
 	if (callable == NULL) {
 		va_end(va);
@@ -1444,27 +1426,11 @@
 }
 
 PyObject *
-#ifdef HAVE_STDARG_PROTOTYPES
-/* VARARGS 2 */
 PyObject_CallMethod(PyObject *o, char *name, char *format, ...)
-#else
-/* VARARGS */
-	PyObject_CallMethod(va_alist) va_dcl
-#endif
 {
 	va_list va;
 	PyObject *args, *func = 0, *retval;
-#ifdef HAVE_STDARG_PROTOTYPES
 	va_start(va, format);
-#else
-	PyObject *o;
-	char *name;
-	char *format;
-	va_start(va);
-	o      = va_arg(va, PyObject *);
-	name   = va_arg(va, char *);
-	format = va_arg(va, char *);
-#endif
 
 	if (o == NULL || name == NULL) {
 		va_end(va);
diff --git a/PC/WinMain.c b/PC/WinMain.c
index c3d0f2f..4249567 100644
--- a/PC/WinMain.c
+++ b/PC/WinMain.c
@@ -5,7 +5,7 @@
 
 #include "Python.h"
 
-extern int Py_Main();
+extern int Py_Main(int, char **);
 
 int WINAPI WinMain(
     HINSTANCE hInstance,      /* handle to current instance */
diff --git a/PC/getpathp.c b/PC/getpathp.c
index e4ff136..8178ab2 100644
--- a/PC/getpathp.c
+++ b/PC/getpathp.c
@@ -336,7 +336,7 @@
 static void
 get_progpath(void)
 {
-	extern char *Py_GetProgramName();
+	extern char *Py_GetProgramName(void);
 	char *path = getenv("PATH");
 	char *prog = Py_GetProgramName();
 
diff --git a/PC/os2vacpp/getpathp.c b/PC/os2vacpp/getpathp.c
index 1c78674..533689c 100644
--- a/PC/os2vacpp/getpathp.c
+++ b/PC/os2vacpp/getpathp.c
@@ -16,7 +16,7 @@
 
 #ifdef MS_WIN32
 #include <windows.h>
-extern BOOL PyWin_IsWin32s();
+extern BOOL PyWin_IsWin32s(void);
 #endif
 
 #include <sys/types.h>
@@ -242,7 +242,7 @@
 static void
 get_progpath(void)
 {
-	extern char *Py_GetProgramName();
+	extern char *Py_GetProgramName(void);
 	char *path = getenv("PATH");
 	char *prog = Py_GetProgramName();
 
