Re: pgsql: Assume that we have signed integral types and flexible array mem
От | Tom Lane |
---|---|
Тема | Re: pgsql: Assume that we have signed integral types and flexible array mem |
Дата | |
Msg-id | 3766.1582325537@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: pgsql: Assume that we have signed integral types and flexiblearray mem (Peter Geoghegan <pg@bowt.ie>) |
Ответы |
Re: pgsql: Assume that we have signed integral types and flexiblearray mem
|
Список | pgsql-committers |
Peter Geoghegan <pg@bowt.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
В списке pgsql-committers по дате отправления: