id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
2768	rts/win32/IOManager.h declarations conflict with windows.h	Deewiant	igloo	"`rts/win32/IOManager.h` has the following:
{{{
/* On the yucky side..suppress -Wmissing-declarations warnings when
 * including <windows.h>
 */
extern void* GetCurrentFiber ( void );
extern void* GetFiberData ( void );
#include <windows.h>
}}}
Which causes problems on my system:
{{{
In file included from d:\progging\mingw\bin\../lib/gcc/i686-pc-mingw32/4.2.1-dw2/../../../../include/windef.h:253,
                 from d:\progging\mingw\bin\../lib/gcc/i686-pc-mingw32/4.2.1-dw2/../../../../include/windows.h:48,
                 from IOManager.h:14,
                 from IOManager.c:11:
d:\progging\mingw\bin\../lib/gcc/i686-pc-mingw32/4.2.1-dw2/../../../../include/winnt.h:3832: error: static declaration of 'GetCurrentFiber' follows non-static declaration
IOManager.h:12: error: previous declaration of 'GetCurrentFiber' was here
d:\progging\mingw\bin\../lib/gcc/i686-pc-mingw32/4.2.1-dw2/../../../../include/winnt.h:3842: error: static declaration of 'GetFiberData' follows non-static declaration
IOManager.h:13: error: previous declaration of 'GetFiberData' was here
}}}
Commenting out the two declarations makes things work again.

A possible reason why this hasn't been a problem for others is that I'm using a 'technology preview' of MinGW from 2007 which comes with GCC 4.2.1, instead of the stable 3.4.5 from 2006.

My `winnt.h` contains the following (snipped down to size where irrelevant):
{{{
#if (__GNUC__ >= 3)
/* Support -masm=intel.  */
static __inline__ PVOID GetCurrentFiber(void)
{
...
}
...
#else /* __GNUC__ >= 3 */
static __inline__ PVOID GetCurrentFiber(void)
{
...
}
}}}
So it seems that with a recent enough version of these headers the fiber functions get defined in any case, regardless of compiler version; were people to grab the latest version of [http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=11550 w32api] they'd run into these problems as well. Judging from the file timestamps I've got 3.11, the second-newest. 3.12's `winnt.h` appears identical in this respect, so updating wouldn't help.

Since the two lines are claimed to be only for warning avoidance, I suggest just removing them."	merge	closed	normal	6.10.2	Runtime System	6.11	fixed			Windows	x86		Unknown				
