Skip to content

Use C++ fixed-type enumeration syntax under C23 (or higher) as well#1156

Open
garrison wants to merge 1 commit intomozilla:mainfrom
garrison:c23-fixed-enums
Open

Use C++ fixed-type enumeration syntax under C23 (or higher) as well#1156
garrison wants to merge 1 commit intomozilla:mainfrom
garrison:c23-fixed-enums

Conversation

@garrison
Copy link
Copy Markdown

C23 has introduced support for enumerations with fixed underlying type, matching the existing C++ syntax for this functionality.

This PR modifies cbindgen to output a header that enables this syntax if either __cplusplus is defined (as before) or if the compilation is according to C23 or later (added in this PR).

My motivation for this change is that my toolchain complained that some names were defined twice, both as an enum and a typedef. I fixed the error by defining __cplusplus even thought the compiler is compiling in C mode. This change will allow me to remove that workaround, as long as C23 or later is set as the C standard.

C23 [has introduced support for enumerations with fixed underlying
type](https://open-std.org/JTC1/SC22/WG14/www/docs/n3030.htm),
matching the existing C++ syntax for this functionality.

This PR modifies cbindgen to output a header that enables this syntax if
either `__cplusplus` is defined (as before) or if the compilation is
according to C23 or later (added in this PR).

My motivation for this change is that my toolchain complained that some
names were defined twice, both as an enum and a typedef.  I [fixed the
error](https://github.com/Qiskit/Qiskit.jl/blob/73bfbb9440168dc76685632f9fb3d00d3a17bd79/gen/generator.jl#L16-L18)
by defining `__cplusplus` even thought the compiler is compiling in C
mode.  This change will allow me to remove that workaround, as long as
C23 or later is set as the C standard.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant