文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
处理操作系统差异
当编写跨平台的应用或库时,通常需要考虑到操作系统之间的差异。变量 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)
else
generic_thing(a)
end
在链式嵌套的条件表达式中(包括 if
/elseif
/end
),@static
必须在每一层都调用(括号是可选的,但是为了可读性,建议添加)。
@static Sys.iswindows() ? :a : (@static Sys.isapple() ? :b : :c)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论