warn against K&R compiler in glibc 2.2

Andreas Jaeger aj@suse.de
Thu Mar 30 22:07:00 GMT 2000


>>>>> Andreas Jaeger writes:

>>>>> Ulrich Drepper writes:
Ulrich> Andreas Jaeger <aj@suse.de> writes:
>>> The easiest way is AFAIK to add the following to some file:
>>> #ifndef __STDC__
>>> # error "You need a ISO C conforming compiler to use the glibc headers"
>>> #endif

Ulrich> If we are thinking about other compilers but gcc (which is legitimate
Ulrich> for the use of glibc) then this is not enough.  Most compilers beside
Ulrich> gcc do not define __STDC__ except if you direct the compiler to be
Ulrich> strictly compliant.  This is a weakness in the ISO C standard.
AJ> :-(

Ulrich> I don't know whether we can add any reasonable check.

AJ> We can at least check for gcc -traditional with:
AJ> #if defined __GNUC__ && __STDC__
AJ> # error "You need a ISO C conforming compiler to use the glibc headers"
AJ> #endif
The condition is wrong.

Here's a new patch.

2000-03-31  Andreas Jaeger  <aj@suse.de>

	* misc/sys/cdefs.h: Error out if compiled by gcc -traditional.

============================================================
Index: misc/sys/cdefs.h
--- misc/sys/cdefs.h	2000/03/31 04:17:23	1.31
+++ misc/sys/cdefs.h	2000/03/31 06:04:43
@@ -28,6 +28,12 @@
 #undef	__P
 #undef	__PMT
 
+/* The GNU C library can only be used by a ISO C compiler (conformant
+   to ISO C90 or ISO C99).  gcc -traditional is not ISO C conformant.  */
+#if defined __GNUC__ && !defined  __STDC__
+# error "You need a ISO C conforming compiler to use the glibc headers"
+#endif
+
 #ifdef __GNUC__
 
 /* GCC can always grok prototypes.  For C++ programs we add throw()

-- 
 Andreas Jaeger
  SuSE Labs aj@suse.de
   private aj@arthur.rhein-neckar.de


More information about the Libc-hacker mailing list