From 21244c70c24db4b3bd7a2169a7a48f637cad5930 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Fri, 13 May 2022 14:16:34 +0100 Subject: sys/cdefs.h: Do not require C++ compilers to define __STDC__ The check for an ISO C compiler assumes that anything GCC-like will define __STDC__, even if it's actually a C++ compiler. That's currently true for G++ and compilers like clang++ that also define __GNUC__, but it might not always be true. The C++ standard leaves it implementation-defined whether or not __STDC__ is defined by C++ compilers. And really the check should be "ISO C or ISO C++ conforming compiler" anyway. So only give an error if __GNUC__ is defined and neither __STDC__ nor __cplusplus is defined. Reviewed-by: Fangrui Song --- misc/sys/cdefs.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'misc') diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h index 1c2b044..f525f67 100644 --- a/misc/sys/cdefs.h +++ b/misc/sys/cdefs.h @@ -27,8 +27,8 @@ /* The GNU libc does not support any K&R compilers or the traditional mode of ISO C compilers anymore. Check for some of the combinations not supported anymore. */ -#if defined __GNUC__ && !defined __STDC__ -# error "You need a ISO C conforming compiler to use the glibc headers" +#if defined __GNUC__ && !defined __STDC__ && !defined __cplusplus +# error "You need a ISO C or C++ conforming compiler to use the glibc headers" #endif /* Some user header file might have defined this before. */ -- cgit v1.1