Re: [HACKERS] Macro From Hell

Thomas Lockhart <lockhart@alumni.caltech.edu>

From: "Thomas G. Lockhart" <lockhart@alumni.caltech.edu>
To: Bruce Momjian <maillist@candle.pha.pa.us>
Cc: David Hartwig <daybee@bellatlantic.net>, hackers@postgreSQL.org
Date: 1998-09-08T14:20:01Z
Lists: pgsql-hackers
> > ((attr[i]->attlen) < sizeof(int32)) ? ( ((attr[i]->attlen) == -1
> > ) ? ( ((attr[i]->attalign) == 'd') ? (((long)(ptr) + (sizeof 
> > (double) -
> > 1)) & ~(sizeof (double) -1)) : (((long)(ptr) + (sizeof (int)
> >  - 1)) & ~(sizeof (int) -1)) ) : ( ((attr[i]->attlen) == 
> > sizeof(char)) ?
> > ( (ptr) ) : ( (void)((char) 1), (((long)(ptr) + (sizeof (sh
      ^^^^^ should perhaps be (long)(ptr)
> > ort) - 1)) & ~(sizeof (short) - 1)) ) ) ) : ( ((attr[i]->attlen) ==
> > sizeof(int32)) ? ( (((long)(ptr) + (sizeof (int) - 1)) & ~(sizeo
> > f (int) -1)) ) : ( (void)((char) 1), ((attr[i]->attalign) == 'd') ?
> > (((long)(ptr) + (sizeof (double) - 1)) & ~(sizeof (double) -1))
> > : (((long)(ptr) + (sizeof (long) - 1)) & ~(sizeof (long) -1)) ) ) );
> > a - 1506-226 (S) The ":" operator is not allowed between "char*" and
> > "unsigned long".
> Looks like I am going to have to do another DISABLE_COMPLEX_MACROS 
> entry for that new macro, just like heap_getattr().

The error message indicates that the AIX compiler is complaining about a
type mismatch within the macro, not the length of the macro itself. Try
adding that additional coersion and see if it helps. The macro is just a
bit "thick" (OK, _really_ thick :), so there may be another place in
there provoking the complaint...

                    - Tom