From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Peter Geoghegan <pg(at)bowt(dot)ie> |
Cc: | pgsql-committers <pgsql-committers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: pgsql: Assume that we have signed integral types and flexible array mem |
Date: | 2020-02-21 22:52:17 |
Message-ID: | 3766.1582325537@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Peter Geoghegan <pg(at)bowt(dot)ie> writes:
> I see this change to c.h:
> +/*
> + * We require C99, hence the compiler should understand flexible array
> + * members. However, for documentation purposes we still consider it to be
> + * project style to write "field[FLEXIBLE_ARRAY_MEMBER]" not just "field[]".
> + * When computing the size of such an object, use "offsetof(struct s, f)"
> + * for portability. Don't use "offsetof(struct s, f[0])", as this doesn't
> + * work with MSVC and with C++ compilers.
> + */
> +#define FLEXIBLE_ARRAY_MEMBER /* empty */
> Why not just get rid of the FLEXIBLE_ARRAY_MEMBER hack altogether?
As I said in the comment, I think it's good style.
Even if you disagree, we shouldn't remove the macro, because that will
just gratuitously break third-party code.
> I don't think that we need it as a way of drawing attention to the
> fact that "offsetof(struct s, f[0])" should not be used. That's not
> idiomatic style anyway. If somebody makes this mistake, then I believe
> that their code will reliably fail to compile once it hits CF Tester
> or the buildfarm.
I'm not 100% sure that aspect of the comment is still correct anyway.
I just copied that advice from the Autoconf output --- but it might well
be referring to the behavior of pre-C99 MSVC versions. However, if it
is correct, why are you sure that violating the advice will lead to
a compile error and not to silently-wrong size calculations?
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Geoghegan | 2020-02-22 00:04:32 | Re: pgsql: Assume that we have signed integral types and flexible array mem |
Previous Message | Peter Geoghegan | 2020-02-21 21:56:06 | Re: pgsql: Assume that we have signed integral types and flexible array mem |