Sane API design (AKA C's #ifdef hell)

Walter Bright newshound2 at digitalmars.com
Fri Apr 17 03:36:39 UTC 2026


On 4/16/2026 4:59 PM, H. S. Teoh wrote:
> 	version(linux) {
> 		version = featureA;
> 		version = featureB;
> 		version = featureC;
> 	}
> 	version(Windows) {
> 		version = featureA;
> 		version = featureD;
> 		version = featureF;
> 	}

It's best to write this as:

```d
version(linux) {
	version = featureA;
	version = featureB;
	version = featureC;
}
else version(Windows) {
	version = featureA;
	version = featureD;
	version = featureF;
}
else static assert(0, "unsupported operating system");
```

This eliminates the future problem of "what is the default operating system?"


More information about the Digitalmars-d mailing list