Note about include files - Mailing list pgsql-hackers

From Peter Eisentraut
Subject Note about include files
Date
Msg-id Pine.LNX.4.21.0010021135070.931-100000@peter.localdomain
Whole thread Raw
Responses Re: Note about include files  (Alfred Perlstein <bright@wintelcom.net>)
Re: Note about include files  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: Note about include files]  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-hackers
The file "postgres.h" (or "c.h" or "config.h", whatever is used) needs to
be the very *first* file included by each source file.  Next time you
touch a source file, please check that this is the case.

The obvious failure mode is that if config.h redefines const, volatile, or
inline then it will cause confusion when some system headers are included
before and some after that definition.

The slightly more esoteric problem I encountered is that when you compile
with CC='gcc -std=c99 -pedantic' on a glibc platform (i.e., "Linux") then
you need to define _SVID_SOURCE and _BSD_SOURCE before including any
system header in order to get the full feature set from the headers.

(Unfortunately, the flex output does not observe this rule either, so we
can't be 100% pedantic warning safe without doing surgery on those files.)

On a related note, does anyone know why the on_proc_exit and on_shmem_exit
hooks use a second argument of type `caddr_t' rather than, say, void*,
char*, Datum, ...?  This artifact is the cause of about two thirds of the
compile errors in the pedantic setting.

-- 
Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/



pgsql-hackers by date:

Previous
From: Jeroen van Vianen
Date:
Subject: Re: Implementing STDDEV and VARIANCE
Next
From: Alfred Perlstein
Date:
Subject: Re: Note about include files