digitalmars.D.learn - Neater "not version (...)" ?
- Vladimirs Nordholm (14/14) Sep 16 2020 Hello.
- Ferhat =?UTF-8?B?S3VydHVsbXXFnw==?= (4/18) Sep 16 2020 Not what you may want, but a dub solution is available.
- Vladimirs Nordholm (4/26) Sep 16 2020 Unfortunately for my use case this does not work here. Thanks for
- Jacob Carlborg (13/31) Sep 16 2020 The workaround for that is to define booleans for all versions and then
- Vladimirs Nordholm (4/33) Sep 16 2020 Ah, I guess it boils down to this then. Doesn't really make it
- Simen =?UTF-8?B?S2rDpnLDpXM=?= (15/28) Sep 16 2020 I wrote this helper a little while back:
- Dennis (6/8) Sep 16 2020 IMO, just keep it as `version(Windows) {} else { ... }` if you
- Jacob Carlborg (4/6) Sep 18 2020 You only need to declare the enums ones.
Hello. I wonder if there is a better way to compile something if the current operating system is _not_ a specific platform. For example, I only want some code to compile if the operating system is not Windows. Currently I do this: version (Windows) { } else { // ... my code } Is there a neater version of this, like `!version (Windows) { /+ ... my code +/ }` ?
Sep 16 2020
On Wednesday, 16 September 2020 at 17:53:31 UTC, Vladimirs Nordholm wrote:Hello. I wonder if there is a better way to compile something if the current operating system is _not_ a specific platform. For example, I only want some code to compile if the operating system is not Windows. Currently I do this: version (Windows) { } else { // ... my code } Is there a neater version of this, like `!version (Windows) { /+ ... my code +/ }` ?Not what you may want, but a dub solution is available. "excludeSourceFiles-windows" : ["source/someunixcode.d"]
Sep 16 2020
On Wednesday, 16 September 2020 at 18:07:25 UTC, Ferhat Kurtulmuş wrote:On Wednesday, 16 September 2020 at 17:53:31 UTC, Vladimirs Nordholm wrote:Unfortunately for my use case this does not work here. Thanks for the tip though!Hello. I wonder if there is a better way to compile something if the current operating system is _not_ a specific platform. For example, I only want some code to compile if the operating system is not Windows. Currently I do this: version (Windows) { } else { // ... my code } Is there a neater version of this, like `!version (Windows) { /+ ... my code +/ }` ?Not what you may want, but a dub solution is available. "excludeSourceFiles-windows" : ["source/someunixcode.d"]
Sep 16 2020
On 2020-09-16 19:53, Vladimirs Nordholm wrote:Hello. I wonder if there is a better way to compile something if the current operating system is _not_ a specific platform. For example, I only want some code to compile if the operating system is not Windows. Currently I do this: version (Windows) { } else { // ... my code } Is there a neater version of this, like `!version (Windows) { /+ ... my code +/ }` ?The workaround for that is to define booleans for all versions and then use `static if`: version (Windows) enum windows = true; else enum windows = false; static if (!windows) { // ... my code } -- /Jacob Carlborg
Sep 16 2020
On Wednesday, 16 September 2020 at 18:54:45 UTC, Jacob Carlborg wrote:On 2020-09-16 19:53, Vladimirs Nordholm wrote:Ah, I guess it boils down to this then. Doesn't really make it "neater", but thank you for the tip!Hello. I wonder if there is a better way to compile something if the current operating system is _not_ a specific platform. For example, I only want some code to compile if the operating system is not Windows. Currently I do this: version (Windows) { } else { // ... my code } Is there a neater version of this, like `!version (Windows) { /+ ... my code +/ }` ?The workaround for that is to define booleans for all versions and then use `static if`: version (Windows) enum windows = true; else enum windows = false; static if (!windows) { // ... my code }
Sep 16 2020
On Wednesday, 16 September 2020 at 19:04:24 UTC, Vladimirs Nordholm wrote:On Wednesday, 16 September 2020 at 18:54:45 UTC, Jacob Carlborg wrote:I wrote this helper a little while back: struct Version { template opDispatch(string name) { mixin("version ("~name~") enum opDispatch = true; else enum opDispatch = false;"); } } static if (Version.Windows) pragma(msg, "Windows machine"); static if (Version.linux) pragma(msg, "Linux machine"); Note that it only works for global versions, and those defined in the same module as Version. -- Simenversion (Windows) enum windows = true; else enum windows = false; static if (!windows) { // ... my code }Ah, I guess it boils down to this then. Doesn't really make it "neater", but thank you for the tip!
Sep 16 2020
On Wednesday, 16 September 2020 at 19:04:24 UTC, Vladimirs Nordholm wrote:Ah, I guess it boils down to this then. Doesn't really make it "neater", but thank you for the tip!IMO, just keep it as `version(Windows) {} else { ... }` if you HAVE to instead of one of the workarounds people suggest. I do wonder what kind of code runs on the "not Windows" operating system though, do you mean `version(Posix)` perhaps?
Sep 16 2020
On 2020-09-16 21:04, Vladimirs Nordholm wrote:Ah, I guess it boils down to this then. Doesn't really make it "neater", but thank you for the tip!You only need to declare the enums ones. -- /Jacob Carlborg
Sep 18 2020