Path: csiph.com!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Tim Rentsch Newsgroups: comp.lang.c Subject: Re: enums and switch vs function calls Date: Sun, 06 Apr 2025 03:17:03 -0700 Organization: A noiseless patient Spider Lines: 34 Message-ID: <86y0wdfvc0.fsf@linuxsc.com> References: <1ybIP.1259194$2zn8.458292@fx15.iad> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Date: Sun, 06 Apr 2025 12:17:04 +0200 (CEST) Injection-Info: dont-email.me; posting-host="041fd418ef8b485cdd75dbfc4b2fa6be"; logging-data="752477"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX180A/F5dnt8je1qxe9ACZDqdbRtUier20E=" User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux) Cancel-Lock: sha1:dFvwcV/qPGJ517LNriH1S3JOhW4= sha1:b6kja3CeqTwIrZ7q7rQc4raOoVo= Xref: csiph.com comp.lang.c:392119 scott@slp53.sl.home (Scott Lurndal) writes: > ram@zedat.fu-berlin.de (Stefan Ram) writes: > >> Richard Harnden 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.