Sujet : Re: enums and switch vs function calls
De : david.brown (at) *nospam* hesbynett.no (David Brown)
Groupes : comp.lang.cDate : 05. Apr 2025, 16:43:35
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vsrj37$2jlgk$3@dont-email.me>
References : 1 2
User-Agent : Mozilla Thunderbird
On 05/04/2025 13:26, Stefan Ram wrote:
Richard Harnden <richard.nospam@gmail.invalid> wrote or quoted:
int hex = colour_to_hex(10);
... then the compiler doesn't complain that 10 is not in the enum.
Why? Surely the compiler can tell.
I get
|
|error: enum conversion when passing argument 1 of 'colour_to_hex' is invalid in C++ [-Wc++-compat]
| |int hex = colour_to_hex(10);
| | ^~
|note: expected 'enum colour' but argument is of type 'int'
| | int colour_to_hex(enum colour colour)
| | ^~~~~~~~~~~~~
|
with
gcc -Wc++-compat
Yes. In C++, the enumeration constants are of the enumeration type, while in C they are "int".
It would be nice if gcc had a warning for this kind of thing (for those that choose to enable it).