Hi, > (long)(&(_prop)->type -&((_struct *)0)->_field)) \ > This seems to be free of gcc extensions and gives more or less sane errors like: > > foo.c:26: error: invalid operands to binary - (have ‘long long int *’ and ‘int *’) The "better error message" bit works. Nice idea. Incremental patch attached. cheers, Gerd