Re: [PATCH] describe: fix --no-exact-match
From: René Scharfe <hidden>
Date: 2023-08-10 19:46:31
Am 10.08.23 um 03:00 schrieb Junio C Hamano:
Jeff King [off-list ref] writes:quoted
int my_foo; ... OPT_CALLBACK('f', "foo", int, &my_foo, ...etc); Not great, but it might not be _too_ bad given that most helpers like OPT_BOOL() can just say "int" behind the scenes. That said, I don't recall these void pointers being a large source of errors in the past. So while it's a fun type-system puzzle, the effort/reward ratio might not be favorable.
I have vague memories of changing a callback from using a string_list to a strset (or whatever) and getting crashes out of some other callers that used it non-obviously via some macro. A compile-time check would have helped me.
I tend to agree on both counts, it is a fun puzzle, and it probably is not going to give us sufficient reward. The fact that "int" and typeof(my_foo) need to be manually kept straight defeats the "type safety" justification for this mental exercise.
The many-pointers idea is a bit silly, admittedly. Having to declare a type manually is how most of C's type safety works, though, so a certain amount of that is unavoidable. typeof (along with typeof_unqual) is nice, but I guess it will take a few years (or decades?) before we can expect it to be supported by all relevant platforms. The typed-callback-with-void-wrapper idea seems promising. Let's see if we can get it into usable shape. René