在 IDL 8.6 中保持向后兼容性——保持冷静,阅读您的发布说明
8598 为此文章评分:
5.0
在 IDL 8.6 中保持向后兼容性——保持冷静,阅读您的发布说明
Jim Pendleton 2016年12月7日,星期三
作为 NV5 Geospatial(前身为 Harris)的内部人员,其“好处”之一是能够提前获得我们工程组开发的商业产品的预发布候选版本。
我们 定制软件解决方案 部门的同事有时就像是煤矿里的金丝雀,偶尔会发现我们曾经良性使用、甚至赖以受益的某个“未记录特性”在新版本的语言中被移除了。通常,这些变更是合理的。
在哪里找到发布说明
有时,仅查看文档中心的 新功能 帮助页面不足以了解所有这些变更。另一个信息来源,通常在“新功能”文档付印之后编写,位于 IDL 或 ENVI 安装目录的文档子目录以外的位置。
该文件包含有关支持的平台和潜在的向后兼容性问题的信息。
如果您收到了 Harris 产品的安装 DVD,请检查 DVD 本身的 info 子目录以获取发布说明文件。
如果您的安装是从 下载和许可证中心 下载的,您或您站点的指定许可证管理员将需要从一个独立于产品安装程序的链接检索发布说明。
下载发布说明
登录后,在网页底部附近的“浏览我的软件和文档”下选择“Harris”链接。

选择“IDL”链接,该链接将在“产品线”列中弹出新列表。

在“当前发布版本”选项卡中选择“IDL”链接。

在“产品下载”页面上,为“发布说明”文档选择适当的项目。

一个向后兼容性说明的示例
最近,我发现我的一些例程使用了涉及“_REF_EXTRA”关键字传递机制的一种公认的非法语法。这段代码与其说是非法,不如说是被忽略了。并且可以认为,从 _REF_EXTRA 被添加到语言中时起,编译器就应该对此提出警告。例如,
function MyRoutine, _REF_EXTRA=extra
MySubroutine, _REF_EXTRA=extra
end
您能发现问题所在吗?
_REF_EXTRA 关键字只应出现在函数或过程的 声明中。在代码体内,调用其他例程时,应始终使用 _EXTRA 关键字。
以上述形式显示的代码,在运行时基本上被忽略。它没有任何实际用途。
直到 IDL 8.6 之前,编译器解释器会直接跳过 _REF_EXTRA 语法的非法使用。在上面的示例中,无论传递给 MyRoutine 什么参数,MySubroutine 都会在没有任何关键字的情况下被调用。
在 IDL 8.6 中,编译器已得到加强,会对无效语法发出警告。如果您的代码符合这种模式,您的代码将无法编译。您可能只想简单地删除被标记的代码,因为它从未生效过。或者您 可能 想更改语法。
function MyRoutine, _REF_EXTRA=extra
MySubroutine, _EXTRA=extra
end
但是,请仔细考虑更改关键字的影响。修改语法也会改变行为。您最终可能会修改到您原本不打算更改的输出关键字!