A build failure since only include header "postgresql/server/port.h"
Hi,
I am building pgpool2, and there is a snprintf.c, which use
PG_STRERROR_R_BUFLEN, so I include header "postgresql/server/port.h".
It works well before. but after I upgrade postgresql from 15.5 to
16.2, I will met following error:
usr/include/postgresql/server/port.h:488:28: error: a parameter list without types is only allowed in a function definition
488 | typedef void (*pqsigfunc) (SIGNAL_ARGS);
| ^
SIGNAL_ARGS is used in port.h, it is defined in c.h, But port.h don't
include c.h, and cause above error. Should we include c.h in port.h?
I also tried include c.h in port.h, but met another error when
building pgpool2. I also reported this to pgpool2 community:
https://www.pgpool.net/mantisbt/view.php?id=830
Could you help to give an suggestion about how to fix this issue?
Thanks
Changqing
Changqing Li <changqing.li@windriver.com> writes:
SIGNAL_ARGS is used in port.h, it is defined in c.h, But port.h don't
include c.h, and cause above error. Should we include c.h in port.h?
No, absolutely not. The expectation in all PG header files is that
the .c file included one of postgres.h, postgres_fe.h, or c.h to
begin with (mainly to establish whether this file is backend code,
frontend code, or intended to work as both). This is your error
not port.h's.
regards, tom lane