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內置命令相同
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM