Sujet : Re: enums and switch vs function calls
De : tr.17687 (at) *nospam* z991.linuxsc.com (Tim Rentsch)
Groupes : comp.lang.cDate : 06. Apr 2025, 11:17:03
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <86y0wdfvc0.fsf@linuxsc.com>
References : 1 2 3
User-Agent : Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
scott@slp53.sl.home (Scott Lurndal) writes:
ram@zedat.fu-berlin.de (Stefan Ram) writes:
>
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
>
That example exemplifies the seriously screwed up error reporting in the
gnu compiler collection.
>
One line of informative error message followed by 5 lines of useless
cruft to wade through. And no way to turn it off completely.
That's true, but it can be reduced to only two lines total (so only one
line more than needed), by using -fno-diagnostics-show-caret.