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:UsersLQQIDLWorkspace estIDL_IDLBridge_testadd.pro'
% Compiled module: ADD.
IDL> .run 'C:UsersLQQIDLWorkspace estIDL_IDLBridge_testadd.pro'
% Compiled module: ADD.
IDL> .rnew 'C:UsersLQQIDLWorkspace estIDL_IDLBridge_testadd.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内置命令相同
 
原文地址:https://www.cnblogs.com/lqqgis/p/13626390.html