On Mon, Sep 11, 2023 at 10:11:56PM +0200, René Scharfe wrote: > Am 10.09.23 um 12:18 schrieb Oswald Buddenhagen: > > On Sat, Sep 09, 2023 at 11:14:20PM +0200, René Scharfe wrote: > >> Convert the offending OPT_CMDMODE users and use the typed value_int > >> point in the macro's definition to enforce that type for future ones. > >> > > that defeats -Wswitch[-enum], though. > > True. Though I don't fully understand these warnings (why not then > also warn about if without else?), but taking them away is a bit rude > to those who care. I think losing warnings is unfortunate, but it's just one example. We're losing the type information completely from the values. That might be of use to the compiler (both for -Wswitch, but also for code generation in general). But it is also of use to human readers, who see that "foo" is of type "enum bar" and know what it's supposed to contain. > > the pedantically correct solution would be using setter callbacks. > > Or to use an int to point to and then copy into a companion enum > variable to after parsing, which would be my choice. Yeah, I had the same thought. I'm just not sure how to do that in a way that isn't a pain for the callers. -Peff