At Fri, 30 Apr 2021 23:05:48 -0400 (EDT), Mouse <[email protected]> 
wrote:
Subject: Re: Some changes to autoconfiguration APIs
>
>   However, I see little reason to do the
> statement expression rather than
>
>       { static const struct cfargs foo = { ... };
>         config_found(..., &foo);
>       }

That's a very good point!

I think statement expressions can be a rather "dangerous" complication
in C -- I've only ever found them to be truly useful within a macro when
I'm trying to avoid, or do something different than, the "usual
promotions".


Kind of related to this, I have the following comment in my notes about C:

- Positional parameters are evil (or at least error prone), especially
  for variable numbers of parameters.

Named parameters can be simulated in modern C with full structure
passing:


        struct fooness {
                int blah;
        };
        struct somefunc_params {
                char *p1;
                int i1;
                struct fooness foo;
        };
        int
        somefunc(struct somefunc_params p)
        {
                if (p.i1)
                        printf("%s", p.p1);
                return 0;
        }

        res = somefunc((struct somefunc_params)
                       {.p1 = "foo",
                        .i1 = 1,
                        .foo = (struct fooness) {.blah = 4}});

A working example with more rants and ravings about C, and some other
ideas about hiding the struct references within the function
implementation is here:

        https://github.com/robohack/experiments/blob/master/tc99namedparams.c

--
                                        Greg A. Woods <[email protected]>

Kelowna, BC     +1 250 762-7675           RoboHack <[email protected]>
Planix, Inc. <[email protected]>     Avoncote Farms <[email protected]>

Attachment: pgpLOiWfxFc4v.pgp
Description: OpenPGP Digital Signature

Reply via email to