On Mon, 21 Mar 2016 15:01:27 +0000, Adam D. Ruppe wrote: > On Monday, 21 March 2016 at 14:51:48 UTC, Vincent R wrote: >> However I understand that this limitation allow a clear separation >> between different platforms... > > That's exactly why it is done this way, so the platforms are clearly > separated from each other and always grouped together for themselves. > > When writing these, we try to copy/paste it from the specific platform's > documentation as a whole block
That works where you are importing platform APIs. version(Posix) makes that a bit easier in some cases. And the general tactic is to wrap those APIs to be not platform-specific so you can omit version statements almost everywhere. But if you still find that you have things that need to be versioned out but much of the code is identical, another option is to use mixins: template DeclarationsForiOSAndAndroid() { extern(C) void foo(); extern(C) int bar(int i); } version (iOS) { mixin DeclarationsForiOSAndAndroid; extern(C) int iOSVersion(); } version (Android) { mixin DeclarationsForiOSAndAndroid; extern(C) int androidVersion(); } There will rarely be a reason to do this, but you might find it handy some day.