IDL 编译

IDL 程序分两类:过程 pro  和函数 Function, 最大区别是函数有返回值
pro add,a,b
  print,a+b
end
 
function add,a, b
  return,a+b 
end
 
1  .compile .run .rnew 编辑
IDL 编译程序有.compile .run .rnew, 都需要在IDL命令行中输入
% Compiled module: ADD.
IDL> .compile 'C:\Users\LQQ\IDLWorkspace\test\IDL_IDLBridge_test\add.pro'
% Compiled module: ADD.
IDL> .run 'C:\Users\LQQ\IDLWorkspace\test\IDL_IDLBridge_test\add.pro'
% Compiled module: ADD.
IDL> .rnew 'C:\Users\LQQ\IDLWorkspace\test\IDL_IDLBridge_test\add.pro'
% Compiled module: ADD.
.compile 可以对多个函数/过程同时被编译
.run 是用来编译和执行IDL主程序的命令组合
.rnew与run类似,但在主程序编译和运行之前将删除已经存在的变量
 
2. resolve_routine 编译
resolve_routine 以IDL程序模块名作为参数,编译同名文件。
优点在于可在IDL程序模块里编译其他程序模块,无需命令行,不管模块之前是否已编译过,都会被重新编译
pro test_resolve_routine
  compile_opt idl2
  resolve_routine, 'add', /EITHER
  add, 1,2
end
 
3. resolve_all 编译
resolve_all 与 resolve_routine类似。将交互的搜索IDL内存中任何未编译的模块同时编译它们。
 
IDL编译规则
1. 编译到主程序后,编译就会停止,接着编译和运行主程序。
    这个规则表明了在一个*.pro文件中,只允许有一个主程序模块(与文件名同名模块);
    如果要编译所有程序模块,主程序模块必须时在文件中最后一个程序模块。
2. 编译到文件末尾或适合其他规则时,文件将停止编译。
    这个规则表明,如果此文件中没有一个与文件名相同的模块,文件中所有模块将会被编译,但不运行任何一个模块。
 
注意:IDL内置的系统过程,如plot, surface等优先级较高,因此,尽量避免自己的程序与IDL内置命令相同
 
posted @   lqqgis  阅读(1612)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示