From dbab6577c6684c62bd2521c1c29dc25c3cac966f Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Tue, 10 May 2016 11:07:42 -0400 Subject: Deprecate inclusion of by The macros defined by are not part of POSIX nor XSI, and their names frequently collide with user code; see for instance glibc bug 19239 and Red Hat bug 130601. includes under _GNU_SOURCE, and C++ code presently cannot avoid being compiled under _GNU_SOURCE, exacerbating the problem. * NEWS: Inclusion of by is deprecated. * misc/sys/sysmacros.h: If __SYSMACROS_DEPRECATED_INCLUSION is defined, define major, minor, and makedev to issue deprecation warnings on use. If __SYSMACROS_DEPRECATED_INCLUSION is *not* defined, suppress previously-activated deprecation warnings for these macros and prevent subsequent inclusions of this header from having any effect. * posix/sys/types.h: Define __SYSMACROS_DEPRECATED_INCLUSION before including , and undefine it again afterward. --- posix/sys/types.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'posix') diff --git a/posix/sys/types.h b/posix/sys/types.h index a7285671bf..83dadcdd05 100644 --- a/posix/sys/types.h +++ b/posix/sys/types.h @@ -218,8 +218,14 @@ typedef int register_t __attribute__ ((__mode__ (__word__))); /* It also defines `fd_set' and the FD_* macros for `select'. */ # include -/* BSD defines these symbols, so we follow. */ +/* BSD defines `major', `minor', and `makedev' in this header. + However, these symbols are likely to collide with user code, so we are + going to stop defining them here in an upcoming release. Code that needs + these macros should include directly. Code that does + not need these macros should #undef them after including this header. */ +# define __SYSMACROS_DEPRECATED_INCLUSION # include +# undef __SYSMACROS_DEPRECATED_INCLUSION #endif /* Use misc. */ -- cgit 1.4.1