Page MenuHomeFreeBSD

D38215.id115906.diff
No OneTemporary

D38215.id115906.diff

diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h
--- a/sys/sys/cdefs.h
+++ b/sys/sys/cdefs.h
@@ -312,6 +312,9 @@
* __generic(). Unlike _Generic(), this macro can only distinguish
* between a single type, so it requires nested invocations to
* distinguish multiple cases.
+ *
+ * Note that the comma operator is used to force expr to decay in
+ * order to match _Generic().
*/
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \
@@ -321,7 +324,7 @@
#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus)
#define __generic(expr, t, yes, no) \
__builtin_choose_expr( \
- __builtin_types_compatible_p(__typeof(expr), t), yes, no)
+ __builtin_types_compatible_p(__typeof((0, (expr))), t), yes, no)
#endif
/*

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 1, 12:29 PM (18 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16894499
Default Alt Text
D38215.id115906.diff (753 B)

Event Timeline