min/max and types

eric pouech eric.pouech at wanadoo.fr
Fri Sep 14 14:31:57 CDT 2001


just for fun, I tried compiling Wine with Linux latest min/max macros
definitions

Index: include/windef.h
===================================================================
RCS file: /usr/share/cvs/cvsroot/wine/wine/include/windef.h,v
retrieving revision 1.58
diff -u -r1.58 windef.h
--- include/windef.h    2001/07/30 18:57:18     1.58
+++ include/windef.h    2001/09/14 18:06:53
@@ -133,6 +133,27 @@
 #define min(a,b)   (((a) < (b)) ? (a) : (b))
 #endif
 #endif  /* NOMINMAX */
+#if defined(__WINE__) && defined(__GNUC__)
+#undef max
+#undef min
+#define min(x,y)                                \
+  ({ const typeof(x) _x = x;                    \
+     const typeof(y) _y = y;                    \
+                                                \
+     (void) (&_x == &_y);                       \
+                                                \
+     _x < _y ? _x : _y;                         \
+  })
+
+#define max(x,y)                                \
+  ({ const typeof(x) _x = x;                    \
+     const typeof(y) _y = y;                    \
+                                                \
+     (void) (&_x == &_y);                       \
+                                                \
+     _x > _y ? _x : _y;                         \
+  })
+#endif
 
 #ifndef _MAX_PATH
 /* FIXME: These are supposed to be in stdlib.h only */

here's the output (the list of types mismatches in min/max calls...)
to whomever feels like fixing them (if needed)

registry.c:386: warning: comparison of distinct pointer types lacks a
cast
registry.c:1246: warning: comparison of distinct pointer types lacks a
cast
trace.c:69: warning: comparison of distinct pointer types lacks a cast
trace.c:147: warning: comparison of distinct pointer types lacks a cast
reg.c:177: warning: comparison of distinct pointer types lacks a cast
reg.c:195: warning: comparison of distinct pointer types lacks a cast
reg.c:209: warning: comparison of distinct pointer types lacks a cast
reg.c:224: warning: comparison of distinct pointer types lacks a cast
reg.c:232: warning: comparison of distinct pointer types lacks a cast
reg.c:306: warning: comparison of distinct pointer types lacks a cast
reg.c:318: warning: comparison of distinct pointer types lacks a cast
reg.c:328: warning: comparison of distinct pointer types lacks a cast
reg.c:379: warning: comparison of distinct pointer types lacks a cast
reg.c:416: warning: comparison of distinct pointer types lacks a cast
reg.c:496: warning: comparison of distinct pointer types lacks a cast
dos_fs.c:2201: warning: comparison of distinct pointer types lacks a
cast
dos_fs.c:2202: warning: comparison of distinct pointer types lacks a
cast
drive.c:926: warning: comparison of distinct pointer types lacks a cast
file.c:1884: warning: comparison of distinct pointer types lacks a cast
profile.c:120: warning: comparison of distinct pointer types lacks a
cast
module.c:1644: warning: comparison of distinct pointer types lacks a
cast
module.c:1645: warning: comparison of distinct pointer types lacks a
cast
heap.c:645: warning: comparison of distinct pointer types lacks a cast
local.c:401: warning: comparison of distinct pointer types lacks a cast
local.c:891: warning: comparison of distinct pointer types lacks a cast
registry.c:507: warning: comparison of distinct pointer types lacks a
cast
version.c:477: warning: comparison of distinct pointer types lacks a
cast
int21.c:857: warning: comparison of distinct pointer types lacks a cast
int21.c:861: warning: comparison of distinct pointer types lacks a cast
ole2nls.c:435: warning: comparison of distinct pointer types lacks a
cast
process.c:1251: warning: comparison of distinct pointer types lacks a
cast
process.c:1276: warning: comparison of distinct pointer types lacks a
cast
process.c:1312: warning: comparison of distinct pointer types lacks a
cast
process.c:1345: warning: comparison of distinct pointer types lacks a
cast
console.c:170: warning: comparison of distinct pointer types lacks a
cast
console.c:429: warning: comparison of distinct pointer types lacks a
cast
console.c:982: warning: comparison of distinct pointer types lacks a
cast
console.c:984: warning: comparison of distinct pointer types lacks a
cast
console.c:1294: warning: comparison of distinct pointer types lacks a
cast
console.c:1345: warning: comparison of distinct pointer types lacks a
cast
registry.c:785: warning: comparison of distinct pointer types lacks a
cast
registry.c:1001: warning: comparison of distinct pointer types lacks a
cast
registry.c:1082: warning: comparison of distinct pointer types lacks a
cast
enhmetafile.c:203: warning: comparison of distinct pointer types lacks a
cast
enhmetafile.c:229: warning: comparison of distinct pointer types lacks a
cast
enhmetafile.c:230: warning: comparison of distinct pointer types lacks a
cast
enhmetafile.c:1702: warning: comparison of distinct pointer types lacks
a cast
dde/misc.c:1963: warning: comparison of distinct pointer types lacks a
cast
message.c:962: warning: comparison of distinct pointer types lacks a
cast
resource.c:320: warning: comparison of distinct pointer types lacks a
cast
resource.c:370: warning: comparison of distinct pointer types lacks a
cast
text.c:318: warning: comparison of distinct pointer types lacks a cast
menu.c:847: warning: comparison of distinct pointer types lacks a cast
menu.c:849: warning: comparison of distinct pointer types lacks a cast
menu.c:917: warning: comparison of distinct pointer types lacks a cast
menu.c:918: warning: comparison of distinct pointer types lacks a cast
menu.c:931: warning: comparison of distinct pointer types lacks a cast
cursoricon.c:519: warning: comparison of distinct pointer types lacks a
cast
timer.c:155: warning: comparison of distinct pointer types lacks a cast
winpos.c:1811: warning: comparison of distinct pointer types lacks a
cast
winpos.c:1812: warning: comparison of distinct pointer types lacks a
cast
winproc.c:1755: warning: comparison of distinct pointer types lacks a
cast
winproc.c:1768: warning: comparison of distinct pointer types lacks a
cast
winproc.c:1901: warning: comparison of distinct pointer types lacks a
cast
winpos.c:1733: warning: comparison of distinct pointer types lacks a
cast
winpos.c:1734: warning: comparison of distinct pointer types lacks a
cast
winpos.c:1738: warning: comparison of distinct pointer types lacks a
cast                                                                                                                                                                                                                                                                                          
winpos.c:1739: warning: comparison of distinct pointer types lacks a
cast
winpos.c:1743: warning: comparison of distinct pointer types lacks a
cast
winpos.c:1744: warning: comparison of distinct pointer types lacks a
cast
winpos.c:1748: warning: comparison of distinct pointer types lacks a
cast
winpos.c:1749: warning: comparison of distinct pointer types lacks a
cast
winpos.c:1815: warning: comparison of distinct pointer types lacks a
cast
winpos.c:1816: warning: comparison of distinct pointer types lacks a
cast
winpos.c:1817: warning: comparison of distinct pointer types lacks a
cast
winpos.c:1818: warning: comparison of distinct pointer types lacks a
cast
xfont.c:3336: warning: comparison of distinct pointer types lacks a cast
xfont.c:3339: warning: comparison of distinct pointer types lacks a cast
lolvldrv.c:106: warning: comparison of distinct pointer types lacks a
cast
mmsystem.c:986: warning: comparison of distinct pointer types lacks a
cast
comboex.c:395: warning: comparison of distinct pointer types lacks a
cast
listview.c:723: warning: comparison of distinct pointer types lacks a
cast
listview.c:780: warning: comparison of distinct pointer types lacks a
cast
listview.c:3123: warning: comparison of distinct pointer types lacks a
cast
listview.c:7940: warning: comparison of distinct pointer types lacks a
cast
propsheet.c:145: warning: comparison of distinct pointer types lacks a
cast
propsheet.c:1998: warning: comparison of distinct pointer types lacks a
cast
rebar.c:1476: warning: comparison of distinct pointer types lacks a cast
rebar.c:1490: warning: comparison of distinct pointer types lacks a cast
tab.c:1080: warning: comparison of distinct pointer types lacks a cast
toolbar.c:1086: warning: comparison of distinct pointer types lacks a
cast
treeview.c:1500: warning: comparison of distinct pointer types lacks a
cast
treeview.c:1594: warning: comparison of distinct pointer types lacks a
cast
treeview.c:2514: warning: comparison of distinct pointer types lacks a
cast
treeview.c:2516: warning: comparison of distinct pointer types lacks a
cast
treeview.c:4218: warning: comparison of distinct pointer types lacks a
cast
treeview.c:4351: warning: comparison of distinct pointer types lacks a
cast
treeview.c:4356: warning: comparison of distinct pointer types lacks a
cast
midi.c:117: warning: comparison of distinct pointer types lacks a cast
audio.c:774: warning: comparison of distinct pointer types lacks a cast
audio.c:1759: warning: comparison of distinct pointer types lacks a cast
midi.c:618: warning: comparison of distinct pointer types lacks a cast
midi.c:968: warning: comparison of distinct pointer types lacks a cast
internet.c:489: warning: comparison of distinct pointer types lacks a
cast                                                                                                        

-- 
---------------
Eric Pouech (http://perso.wanadoo.fr/eric.pouech/)
"The future will be better tomorrow", Vice President Dan Quayle




More information about the wine-devel mailing list