FYI, While looking at a config.log file, I noticed a diagnostic that was due to the code below, and found it suspicious enough that I went to read the macro definition.
>From 7a615729c9c56a3608ec0224a67f21d23ea6b3ad Mon Sep 17 00:00:00 2001 From: Jim Meyering <[email protected]> Date: Sun, 24 Jul 2011 15:50:36 +0200 Subject: [PATCH] docs: improve the prose describing _AC_CHECK_TYPE_NEW_BODY * lib/autoconf/types.m4 (_AC_CHECK_TYPE_NEW_BODY): Improve prose. --- ChangeLog | 5 +++++ lib/autoconf/types.m4 | 16 +++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1e17e60..219176f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2011-07-24 Jim Meyering <[email protected]> + + docs: improve the prose describing _AC_CHECK_TYPE_NEW_BODY + * lib/autoconf/types.m4 (_AC_CHECK_TYPE_NEW_BODY): Improve prose. + 2011-08-31 Paul Eggert <[email protected]> AC_C_CONST: don't reject gcc -Werror -Wall diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4 index c47884c..72093e9 100644 --- a/lib/autoconf/types.m4 +++ b/lib/autoconf/types.m4 @@ -80,15 +80,15 @@ # int foo (TYPE param); # # but of course you soon realize this does not make it with K&R -# compilers. And by no ways you want to +# compilers. And by no means do you want to use this: # # int foo (param) # TYPE param # { ; } # -# since this time it's C++ who is not happy. +# since C++ would complain loudly. # -# Don't even think of the return type of a function, since K&R cries +# Don't even think of using a function return type, since K&R cries # there too. So you start thinking of declaring a *pointer* to this TYPE: # # TYPE *p; @@ -101,14 +101,16 @@ # # sizeof (TYPE); # -# But this succeeds if TYPE is a variable: you get the size of the -# variable's type!!! +# That is great, but has one drawback: it succeeds when TYPE happens +# to be a variable: you'd get the size of the variable's type. +# Obviously, we must not accept a variable in place of a type name. # -# So, to filter out the last possibility, you try this too: +# So, to filter out the last possibility, we will require that this fail: # # sizeof ((TYPE)); # -# This fails if TYPE is a type, but succeeds if TYPE is actually a variable. +# This evokes a syntax error when TYPE is a type, but succeeds if TYPE +# is actually a variable. # # Also note that we use # -- 1.7.7.rc0.362.g5a14
