This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: egcs-20000403 Build Failure on SunOS 4.1.5


 > From: Zack Weinberg <zack@wolery.cumb.org>
 > 
 > Could you please add a comment to symcat.h explaining that CONCATn
 > must not have spaces around its arguments?
 > zw

How's this wording?  (Also, by adding the check on the autoconf macro
HAVE_STRINGIZE, we can eliminate some of the redundant code in
system.h.)

		--Kaveh



2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* symcat.h: Honor HAVE_STRINGIZE.  Add comments/caveats with
	regard to traditional C behavior.
	
diff -rup ../egcs-CVS20000404/include/symcat.h egcs-CVS20000404/include/symcat.h
--- ../egcs-CVS20000404/include/symcat.h	Tue Apr  4 11:26:11 2000
+++ egcs-CVS20000404/include/symcat.h	Tue Apr  4 12:04:26 2000
@@ -19,12 +19,16 @@
 #ifndef SYM_CAT_H
 #define SYM_CAT_H
 
-#if defined (__STDC__) || defined (ALMOST_STDC)
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
 #define CONCAT2(a,b)	 a##b
 #define CONCAT3(a,b,c)	 a##b##c
 #define CONCAT4(a,b,c,d) a##b##c##d
 #define STRINGX(s) #s
 #else
+/* Note one should never pass extra whitespace to the CONCATn macros,
+   e.g. CONCAT2(foo, bar) because traditonal C will keep the space between
+   the two labels instead of concatenating them.  Instead, make sure to
+   write CONCAT2(foo,bar).  */
 #define CONCAT2(a,b)	 a/**/b
 #define CONCAT3(a,b,c)	 a/**/b/**/c
 #define CONCAT4(a,b,c,d) a/**/b/**/c/**/d
@@ -35,6 +39,10 @@
 #define XCONCAT3(a,b,c)   CONCAT3(a,b,c)
 #define XCONCAT4(a,b,c,d) CONCAT4(a,b,c,d)
 
+/* Note the layer of indirection here is typically used to allow
+   stringification of the expansion of macros.  I.e. "#define foo bar",
+   "XSTRING(foo)".  Be aware that this only works for __STDC__, not for
+   traditional C compilers.  */
 #define XSTRING(s) STRINGX(s) 
 
 #endif SYM_CAT_H

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]