Use standard C23 and C++ attributes if available
This is related to the C++ compatibility work in [0]/messages/by-id/df78eaac-c2eb-4344-852e-0965c75c5ad6@eisentraut.org.
This patch proposes to use the standard C23 and C++ attributes
[[nodiscard]], [[noreturn]], and [[maybe_unused]], if available.
The immediate practical impact is that for pg_noreturn, we can drop the
GCC-specific and MSVC-specific fallbacks, because the C11 and the C++
implementation will now cover all required cases.
For the other two attributes, this makes them available in
not-GCC-compatible compilers that support C23 as well as in C++. This
set is theoretical at the moment, but it might become more practical if
either MSVC gets some C23 support or we improve the support for C++
extensions with MSVC (see also [0]/messages/by-id/df78eaac-c2eb-4344-852e-0965c75c5ad6@eisentraut.org).
[0]: /messages/by-id/df78eaac-c2eb-4344-852e-0965c75c5ad6@eisentraut.org
/messages/by-id/df78eaac-c2eb-4344-852e-0965c75c5ad6@eisentraut.org
Attachments:
0001-Use-standard-C23-and-C-attributes-if-available.patchtext/plain; charset=UTF-8; name=0001-Use-standard-C23-and-C-attributes-if-available.patchDownload+25-20
On 19.02.26 09:54, Peter Eisentraut wrote:
This is related to the C++ compatibility work in [0].
This patch proposes to use the standard C23 and C++ attributes
[[nodiscard]], [[noreturn]], and [[maybe_unused]], if available.The immediate practical impact is that for pg_noreturn, we can drop the
GCC-specific and MSVC-specific fallbacks, because the C11 and the C++
implementation will now cover all required cases.For the other two attributes, this makes them available in not-GCC-
compatible compilers that support C23 as well as in C++. This set is
theoretical at the moment, but it might become more practical if either
MSVC gets some C23 support or we improve the support for C++ extensions
with MSVC (see also [0]).[0]: /messages/by-id/df78eaac-
c2eb-4344-852e-0965c75c5ad6%40eisentraut.org
This has been committed. Note that the C++ extension support with MSVC
exists now, so this patch has some utility for that.