=?utf-8?Q?Dagfinn_Ilmari_Manns=C3=A5ker?= <ilm...@ilmari.org> writes: > Tom Lane <t...@sss.pgh.pa.us> writes: >> libpq-fe.h has to be compilable by application code that has never >> heard of pg_config.h let alone c.h, so we'd have to tread carefully >> about not breaking that property. But it seems like this would be >> worth looking into.
> The fallback code isn't exactly complicated, so we could just duplicate > it in libpq-fe.h: > #ifndef __has_attribute > #define __has_attribute(attribute) 0 > #endif The problem with that approach is the likelihood of stomping on symbols that a calling application will use later. I think we really need a controlling #ifdef check on some PG_FOO symbol that we can be sure no outside application will have defined. Roughly speaking, #ifdef PG_USE_ALLOCATOR_CHECKS #define pg_attribute_malloc __attribute__((malloc)) ... #else #define pg_attribute_malloc ... #endif and then we could make definition of PG_USE_ALLOCATOR_CHECKS be conditional on having the right compiler behavior, rather than trusting that a nest of #ifdef checks is sufficient to detect that. regards, tom lane