处理操作系统差异
在编写跨平台应用程序或库时,通常需要考虑操作系统之间的差异。变量 Sys.KERNEL 可用于处理此类情况。Sys 模块中有一些函数旨在简化此操作,例如 isunix、islinux、isapple、isbsd、isfreebsd 和 iswindows。这些函数的使用方式如下
if Sys.iswindows()
windows_specific_thing(a)
end请注意,islinux、isapple 和 isfreebsd 是 isunix 的相互排斥子集。此外,有一个宏 @static 可以使用这些函数来有条件地隐藏无效代码,如下面的示例所示。
简单代码块
ccall((@static Sys.iswindows() ? :_fopen : :fopen), ...)复杂代码块
@static if Sys.islinux()
linux_specific_thing(a)
elseif Sys.isapple()
apple_specific_thing(a)
else
generic_thing(a)
end在嵌套条件语句时,@static 必须在每个级别重复(括号可选,但为了可读性建议使用)
@static Sys.iswindows() ? :a : (@static Sys.isapple() ? :b : :c)