enums and version/static if/"inheritance"
Walter Bright
newshound2 at digitalmars.com
Wed Jul 31 06:11:15 UTC 2024
This comes up from time to time.
```
enum FOO {
A = 5,
B = 6,
version (x86_64) {
C = 7,
} else version (AArch64) {
C = 17,
} else {
static assert(0);
}
version E = 9,
}
```
I've seen this forever in C. It just makes my brain bleed. Here's the D way:
```
version (x86_64)
{
enum FOO
{
A = 5,
B = 6,
C = 7,
}
}
else version (AArch64)
{
enum FOO
{
A = 5,
B = 6,
C = 17,
}
}
else
static assert(0);
```
Ah, doesn't that look nicer? It's nicer because the code forms a regular
pattern. A regular pattern is easier to understand. It also uncovers errors,
like the `version E = 9,` error in the opening example.
Also, when I'm debugging AArch64 code, I don't want to see x86_64 code
interleaved in with it. Such makes it too easy to inadvertently mix them up.
More information about the Digitalmars-d
mailing list