diff --git a/dlls/cards/cards.c b/dlls/cards/cards.c
index 5baf47a..6a5a95f 100644
--- a/dlls/cards/cards.c
+++ b/dlls/cards/cards.c
@@ -269,7 +269,7 @@
 /***********************************************************************
  * Frees resources reserved by cdtInitialize.
  */
-void WINAPI cdtTerm()
+void WINAPI cdtTerm(void)
 {
 	int i;
 
diff --git a/dlls/comctl32/tests/monthcal.c b/dlls/comctl32/tests/monthcal.c
index 2972aa7..4f29ac9 100644
--- a/dlls/comctl32/tests/monthcal.c
+++ b/dlls/comctl32/tests/monthcal.c
@@ -395,7 +395,7 @@
     return ret;
 }
 
-static BOOL register_parent_wnd_class()
+static BOOL register_parent_wnd_class(void)
 {
     WNDCLASSA cls;
 
diff --git a/dlls/comctl32/tests/toolbar.c b/dlls/comctl32/tests/toolbar.c
index 5e619ee..77d721b 100644
--- a/dlls/comctl32/tests/toolbar.c
+++ b/dlls/comctl32/tests/toolbar.c
@@ -948,7 +948,7 @@
     DestroyWindow(hToolbar);
 }
 
-static void test_createtoolbarex()
+static void test_createtoolbarex(void)
 {
     HWND hToolbar;
     TBBUTTON btns[3];
diff --git a/dlls/dpnhpast/main.c b/dlls/dpnhpast/main.c
index c7eba7f..6ec2e6f 100644
--- a/dlls/dpnhpast/main.c
+++ b/dlls/dpnhpast/main.c
@@ -56,7 +56,7 @@
  *
  */
 #if 0
-HRESULT WINAPI DPNHPAST_DirectPlayNATHelpCreate()
+HRESULT WINAPI DPNHPAST_DirectPlayNATHelpCreate(void)
 {
 	/* @stub in .spec */
 }
diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c
index 17f0f85..de29bfb 100644
--- a/dlls/gdiplus/tests/graphics.c
+++ b/dlls/gdiplus/tests/graphics.c
@@ -26,7 +26,7 @@
 #define expect(expected, got) ok(got == expected, "Expected %.8x, got %.8x\n", expected, got)
 #define TABLE_LEN (23)
 
-static void test_constructor_destructor()
+static void test_constructor_destructor(void)
 {
     GpStatus stat;
     GpGraphics *graphics = NULL;
@@ -91,7 +91,7 @@
     expect(0, dups);
 }
 
-static void test_save_restore()
+static void test_save_restore(void)
 {
     GpStatus stat;
     GraphicsState state_a, state_b, state_c;
diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c
index d19a14c..7068509 100644
--- a/dlls/gdiplus/tests/image.c
+++ b/dlls/gdiplus/tests/image.c
@@ -24,7 +24,7 @@
 
 #define expect(expected, got) ok(((UINT)got) == ((UINT)expected), "Expected %.8x, got %.8x\n", (UINT)expected, (UINT)got)
 
-static void test_Scan0()
+static void test_Scan0(void)
 {
     GpBitmap *bm;
     GpStatus stat;
diff --git a/dlls/gphoto2.ds/ui.c b/dlls/gphoto2.ds/ui.c
index dd802fd..6e8ecc0 100644
--- a/dlls/gphoto2.ds/ui.c
+++ b/dlls/gphoto2.ds/ui.c
@@ -72,7 +72,7 @@
     EndDialog(hwnd, rc);
 }
 
-static int GetAllImages()
+static int GetAllImages(void)
 {
     struct gphoto2_file *file;
     int has_images = 0;
diff --git a/dlls/kernel32/relay16.c b/dlls/kernel32/relay16.c
index 947ccf6..3712aec 100644
--- a/dlls/kernel32/relay16.c
+++ b/dlls/kernel32/relay16.c
@@ -579,7 +579,7 @@
 /***********************************************************************
  *		__wine_call_from_16_regs (KERNEL32.@)
  */
-void __wine_call_from_16_regs()
+void __wine_call_from_16_regs(void)
 {
     assert( FALSE );
 }
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 9c51b48..d2cd09c 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -172,7 +172,7 @@
     return alloced_bstrs[alloced_bstrs_count++];
 }
 
-static void free_bstrs()
+static void free_bstrs(void)
 {
     int i;
     for (i = 0; i < alloced_bstrs_count; i++)
@@ -1457,7 +1457,7 @@
     free_bstrs();
 }
 
-static void test_XPath()
+static void test_XPath(void)
 {
     HRESULT r;
     VARIANT var;
diff --git a/dlls/oleaut32/oleaut.c b/dlls/oleaut32/oleaut.c
index 202db67..f756d83 100644
--- a/dlls/oleaut32/oleaut.c
+++ b/dlls/oleaut32/oleaut.c
@@ -574,7 +574,7 @@
  * Currently the versions returned are 2.20 for Win3.1, 2.30 for Win95 & NT 3.51,
  * and 2.40 for all later versions. The build number is maximum, i.e. 0xffff.
  */
-ULONG WINAPI OaBuildVersion()
+ULONG WINAPI OaBuildVersion(void)
 {
     switch(GetVersion() & 0x8000ffff)  /* mask off build number */
     {
diff --git a/dlls/olepro32/olepro32stubs.c b/dlls/olepro32/olepro32stubs.c
index 5046960..04b1868 100644
--- a/dlls/olepro32/olepro32stubs.c
+++ b/dlls/olepro32/olepro32stubs.c
@@ -33,7 +33,7 @@
 /***********************************************************************
  *		DllUnregisterServer (OLEPRO32.258)
  */
-HRESULT WINAPI DllUnregisterServer()
+HRESULT WINAPI DllUnregisterServer(void)
 {
 	FIXME("stub\n");
 	return S_OK;
@@ -42,7 +42,7 @@
 /***********************************************************************
  *		DllRegisterServer (OLEPRO32.257)
  */
-HRESULT WINAPI DllRegisterServer()
+HRESULT WINAPI DllRegisterServer(void)
 {
 	FIXME("stub\n");
 	return S_OK;
diff --git a/dlls/quartz/main.c b/dlls/quartz/main.c
index 1e9e892..230e5be 100644
--- a/dlls/quartz/main.c
+++ b/dlls/quartz/main.c
@@ -201,7 +201,7 @@
 /***********************************************************************
  *              DllCanUnloadNow (QUARTZ.@)
  */
-HRESULT WINAPI DllCanUnloadNow()
+HRESULT WINAPI DllCanUnloadNow(void)
 {
     return dll_ref != 0 ? S_FALSE : S_OK;
 }
diff --git a/dlls/setupapi/stubs.c b/dlls/setupapi/stubs.c
index 5704ce6..9881f36 100644
--- a/dlls/setupapi/stubs.c
+++ b/dlls/setupapi/stubs.c
@@ -150,7 +150,7 @@
 /***********************************************************************
  *      SetupCloseLog(SETUPAPI.@)
  */
-void WINAPI SetupCloseLog()
+void WINAPI SetupCloseLog(void)
 {
     FIXME("() stub\n");
 }
diff --git a/dlls/shell32/tests/systray.c b/dlls/shell32/tests/systray.c
index e6d72a9..b80b109 100644
--- a/dlls/shell32/tests/systray.c
+++ b/dlls/shell32/tests/systray.c
@@ -27,7 +27,7 @@
 
 static HWND hMainWnd;
 
-void test_cbsize()
+void test_cbsize(void)
 {
     NOTIFYICONDATAW nidW;
     NOTIFYICONDATAA nidA;
diff --git a/dlls/shlwapi/thread.c b/dlls/shlwapi/thread.c
index 1affb79..901413f 100644
--- a/dlls/shlwapi/thread.c
+++ b/dlls/shlwapi/thread.c
@@ -184,7 +184,7 @@
  *   Success: S_OK. The threads object reference is released.
  *   Failure: An HRESULT error code.
  */
-HRESULT WINAPI SHReleaseThreadRef()
+HRESULT WINAPI SHReleaseThreadRef(void)
 {
   FIXME("() - stub!\n");
   return S_OK;
diff --git a/dlls/user32/tests/class.c b/dlls/user32/tests/class.c
index b29ec5a..7f54e2f 100644
--- a/dlls/user32/tests/class.c
+++ b/dlls/user32/tests/class.c
@@ -565,7 +565,7 @@
     check_thread_instance( "EDIT", (HINSTANCE)0x12345678, (HINSTANCE)0x12345678, (HINSTANCE)0xdeadbeef );
 }
 
-static void test_defwndproc()
+static void test_defwndproc(void)
 {
     static const char classA[] = "deftest";
     static const WCHAR classW[] = {'d','e','f','t','e','s','t',0};
diff --git a/dlls/uxtheme/system.c b/dlls/uxtheme/system.c
index 9e69cb8..4d02f4a 100644
--- a/dlls/uxtheme/system.c
+++ b/dlls/uxtheme/system.c
@@ -842,7 +842,7 @@
  * RETURNS
  *     some kind of status flag
  */
-DWORD WINAPI QueryThemeServices()
+DWORD WINAPI QueryThemeServices(void)
 {
     FIXME("stub\n");
     return 3; /* This is what is returned under XP in most cases */
diff --git a/dlls/winedos/vga.c b/dlls/winedos/vga.c
index dcf68dd..2a07f21 100644
--- a/dlls/winedos/vga.c
+++ b/dlls/winedos/vga.c
@@ -646,7 +646,7 @@
  * Get start of 64k window at 0xa0000 in bytes.
  * Value is -1 in color plane modes.
  */
-int VGA_GetWindowStart()
+int VGA_GetWindowStart(void)
 {
     return vga_fb_window;
 }
diff --git a/dlls/wineps.drv/mkagl.c b/dlls/wineps.drv/mkagl.c
index 9701621ff..3606fe6 100644
--- a/dlls/wineps.drv/mkagl.c
+++ b/dlls/wineps.drv/mkagl.c
@@ -55,12 +55,12 @@
     return strcmp(((const GLYPHINFO *)a)->name, ((const GLYPHINFO *)b)->name);
 }
 
-static inline void sort_by_UV()
+static inline void sort_by_UV(void)
 {
     qsort(glyphs, num_glyphs, sizeof(GLYPHINFO), cmp_by_UV);
 }
 
-static inline void sort_by_name()
+static inline void sort_by_name(void)
 {
     qsort(glyphs, num_glyphs, sizeof(GLYPHINFO), cmp_by_name);
 }
@@ -113,7 +113,7 @@
  *  Read the Adobe Glyph List from 'glyphlist.txt'
  */
 
-static void read_agl()
+static void read_agl(void)
 {
     FILE    *f = fopen("glyphlist.txt", "r");
     char    linebuf[256], namebuf[128], commbuf[128];
diff --git a/programs/taskmgr/graphctl.c b/programs/taskmgr/graphctl.c
index 749d9fa..e255487 100644
--- a/programs/taskmgr/graphctl.c
+++ b/programs/taskmgr/graphctl.c
@@ -111,7 +111,7 @@
 }
 
 #if 0
-TGraphCtrl::~TGraphCtrl()
+TGraphCtrl::~TGraphCtrl(void)
 {
     /*  just to be picky restore the bitmaps for the two memory dc's */
     /*  (these dc's are being destroyed so there shouldn't be any leaks) */
@@ -515,7 +515,7 @@
 }
 
 #if 0
-void TGraphCtrl::Reset()
+void TGraphCtrl::Reset(void)
 {
     /*  to clear the existing data (in the form of a bitmap) */
     /*  simply invalidate the entire control */
diff --git a/tools/winapi/msvcmaker b/tools/winapi/msvcmaker
index fac4359..50644ac 100755
--- a/tools/winapi/msvcmaker
+++ b/tools/winapi/msvcmaker
@@ -1139,7 +1139,7 @@
     print OUT "/* Automatically generated file; DO NOT EDIT!! */\n\n";
 
     print OUT "/* Force the linker to generate a .lib file */\n";
-    print OUT "void __wine_dummy_lib_function()\n{\n}\n\n";
+    print OUT "void __wine_dummy_lib_function(void)\n{\n}\n\n";
 }
 
 if ($options->wine) {
