From: | Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com> |
---|---|
To: | "Smith, Peter" <peters(at)fast(dot)au(dot)fujitsu(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Michael Paquier <michael(at)paquier(dot)xyz>, Dagfinn Ilmari Mannsåker <ilmari(at)ilmari(dot)org>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Proposal: Add more compile-time asserts to expose inconsistencies. |
Date: | 2019-10-26 13:06:07 |
Message-ID: | 04f13882-9625-c2b9-d6d2-8a2f3f24ac4e@2ndquadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2019-10-10 00:52, Smith, Peter wrote:
> I liked your idea of using an extern function declaration for implementing the file-scope compile-time asserts. AFAIK it is valid standard C.
>
> Thank you for the useful link to that compiler explorer. I tried many scenarios of the new StaticAssertDecl and all seemed to work ok.
> https://godbolt.org/z/fDrmXi
>
> The patch has been updated accordingly. All assertions identified in the original post are now adjacent the global variables they are asserting.
>
The problem with this implementation is that you get a crappy error
message when the assertion fails, namely something like:
../../../../src/include/c.h:862:84: error: size of array
'static_assert_failure' is negative
Ideally, the implementation should end up calling _Static_assert()
somehow, so that we get the compiler's native error message.
We could do a configure check for whether _Static_assert() works at file
scope. I don't know what the support for that is, but it seems to work
in gcc and clang.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Eugen Konkov | 2019-10-26 15:41:10 | Proposition to use '==' as synonym for 'IS NOT DISTINCT FROM' |
Previous Message | Peter Eisentraut | 2019-10-26 12:37:45 | Re: errbacktrace |