From bf4ab281678450284b14a53089c1f364132cb203 Mon Sep 17 00:00:00 2001 From: "Kaveh R. Ghazi" Date: Tue, 13 Mar 2001 13:29:40 +0000 Subject: [PATCH] * cpp.texi (poison): Explain the macro expansion exception. From-SVN: r40438 --- gcc/ChangeLog | 4 ++++ gcc/cpp.texi | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6bde0bc234f..b18f2733a60 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2001-03-13 Kaveh R. Ghazi + + * cpp.texi (poison): Explain the macro expansion exception. + 2001-03-13 Jakub Jelinek * expr.c (store_expr): Add dont_store_target. If temp is already in diff --git a/gcc/cpp.texi b/gcc/cpp.texi index 8bfa8c40245..57da93332f7 100644 --- a/gcc/cpp.texi +++ b/gcc/cpp.texi @@ -1601,6 +1601,22 @@ sprintf(some_string, "hello"); @noindent will produce an error. +Note, if the poisoned identifier appears through the result of macro +expansion it @emph{won't} cause an error. So if you poison an +identifier you need not worry about system headers defining macros that +use it. + +For example, + +@example +#define strrchr rindex +#pragma GCC poison rindex +strrchr(some_string, 'h'); +@end example + +@noindent +will not produce an error. + @node Macro Pitfalls,, Poisoning, Macros @subsection Pitfalls and Subtleties of Macros @cindex problems with macros -- 2.30.2