[Swan-dev] proposal: "const struct ip_protocol" => "ip_protocol"

D. Hugh Redelmeier hugh at mimosa.com
Sun Oct 13 17:29:09 UTC 2019

| From: Andrew Cagney <andrew.cagney at gmail.com>

| because it gets confusing and is obscure; better to spell out:
|    const something
| where the code is being used than leave everyone wondering, for instance, given:
|    ip_something(something *foo, const someotherthing *bar, somethingelse *baz);
| which are typos and which are correct?  imnsho field_desc et.al.,
| being made typedef const struct were a massive mistake

Clearly I disagree (since I created most of them).

Why is it a mistake?  Confusing and obscure?  No use should be without
the const, so make it built-in.  The const is part of the abstraction.
The "const" is something you should not have to think about separately
at each use of the abstraction.

If I remember correctly, the C const qualifier is now idempotent so
adding a redundant one doesn't generate a compiler error.

| for struct something vs typedef something;
| kernel guidelines say don't use typedefs; we've modified that to say
| "typedef" denotes stay-out but here we're saying welcome aboard

We don't use kernel guidelines except for formatting.  This isn't
kernel code.

I don't know what you mean by "stay-out" vs. "welcome aboard".

Very very roughly, struct meant: structuring data transparently,
typedef meant: an abstraction (with varying transparency).

More information about the Swan-dev mailing list