处理操作系统变化
在编写跨平台应用程序或库时,通常需要考虑操作系统之间的差异。 变量 系统。内核 可用于处理此类情况。 有几个功能在 系统 模块旨在使这更容易,例如 isunix,isunix, 伊斯利努斯, 苹果树, isbsd, isfreebsd,而 等窗,等窗. 这些可以使用如下:
if Sys.iswindows()
windows_specific_thing(a)
end
请注意 伊斯利努斯, 苹果树,而 isfreebsd 是相互排斥的子集 isunix,isunix. 此外,还有一个宏 @静态 这使得可以使用这些函数有条件地隐藏无效代码,如下面的示例所示。
简单积木:
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 Sys.iswindows() ? :a : (@static Sys.isapple() ? :b : :c)