Strange behaviour gcc 3.0

Andreas Jaeger aj@suse.de
Thu Aug 2 09:15:00 GMT 2001


Alexandre Oliva <aoliva@redhat.com> writes:

> On Aug  1, 2001, Igmar Palsenberg <i.palsenberg@jdimedia.nl> wrote:
> 
>>         printf("bogus"
>> #ifdef TEST
>>         "testing"
>> #endif
>>         );
> 
>> [root@wrkst SPECS]# gcc -O2 -o x x.c
>> x.c:7:1: directives may not be used inside a macro argument
>> x.c:7:1: unterminated argument list invoking macro "printf"
>> x.c: In function `main':
>> x.c:10: parse error before ')' token
> 
>> Code didn't change. This really strikes me.. Anyone can comment on this ??
> 
> printf is a macro (don't ask me why; it's a glibc implementation
> detail that is authorized by the C Standard), and there can't be
> preprocessor directives inside a macro argument list.

Since so many where interested to send a patch - there's no need to do
it anymore.  glibc 2.2.4 will not contain the printf macro, I just
committed a patch to remove it.

Andreas

2001-08-02  Andreas Jaeger  <aj@suse.de>

        * libio/bits/stdio.h (printf): Remove printf optimization since
        GCC 3.0 can optimize printf.

-- 
 Andreas Jaeger
  SuSE Labs aj@suse.de
   private aj@arthur.inka.de
    http://www.suse.de/~aj



More information about the Gcc-bugs mailing list