tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Some changes to autoconfiguration APIs

At Fri, 30 Apr 2021 23:05:48 -0400 (EDT), Mouse <mouse%Rodents-Montreal.ORG@localhost> 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

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

	struct fooness {
		int blah;
	struct somefunc_params {
		char *p1;
		int i1;
		struct fooness foo;
	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:

					Greg A. Woods <>

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

Attachment: pgp25YtIjV6re.pgp
Description: OpenPGP Digital Signature

Home | Main Index | Thread Index | Old Index