When writing cross-platform applications or libraries, it is often necessary to allow for differences between operating systems. The variable
Sys.KERNEL can be used to handle such cases. There are several functions in the
Sys module intended to make this easier, such as
iswindows. These may be used as follows:
if Sys.iswindows() windows_specific_thing(a) end
isfreebsd are mutually exclusive subsets of
isunix. Additionally, there is a macro
@static which makes it possible to use these functions to conditionally hide invalid code, as demonstrated in the following examples.
ccall((@static Sys.iswindows() ? :_fopen : :fopen), ...)
@static if Sys.islinux() linux_specific_thing(a) else generic_thing(a) end
When chaining conditionals (including
@static must be repeated for each level (parentheses optional, but recommended for readability):
@static Sys.iswindows() ? :a : (@static Sys.isapple() ? :b : :c)
© 2009–2019 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.