Engee 文档

操作系统选项的处理

在编写跨平台应用程序或库时,通常需要考虑到操作系统之间的差异。 对于这种情况,您可以使用变量’Sys。核'。 Sys模块有几个功能可以简化此任务,例如isunix,islinux,isapple,isbsd,isfreebsd和iswindows。 它们可以如下使用。

if Sys.iswindows()
    windows_specific_thing(a)
end

请注意,'isinux'’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)