2012-02-10 18 views
4

我的問題是,如果讓addpath類似於在C#包括在C,如果你不添加#後衛(的#ifndef ...)會有的功能多定義。但似乎MATLAB正在處理這個問題。多次調用MATLAB的addpath是否有缺點?

我就是用這個方案不要打電話讓addpath很多次:

try 
    f(sample args); 
catch err 
    addpath('lib'); 
end 

但現在我認爲這是沒有必要的。

回答

5

#include增加了一個特定的頭文件addpath僅向搜索路徑添加一個文件夾,不會將任何代碼添加到您的程序中。認爲它作爲添加的目錄搜索在C頭文件++(例如,在Visual Studio中,它是「附加包含目錄」和g ++,它與-I實現)。

另外,我覺得addpath檢查,如果該文件夾已經添加,所以你真的沒有做與重複調用addpath('lib')什麼。

+0

你的意思是對於G資本'-L' ++? – 2012-02-10 18:05:41

+1

是的,'addpath'調用'path'函數,用於檢查路徑上已有的目錄。它雖然改變了順序。 – yuk 2012-02-10 18:10:18

+0

@AndrewJanke:是的,但是這比喻混亂了一點。我會去'-I'。 – Jacob 2012-02-10 18:10:22

3

addpath的多個呼叫不會創建多個功能,因此從正確性的角度來看,多次使用addpath沒有問題。

然而,addpath是相對慢的操作。在正常操作期間,您不應該在可能需要多次調用的函數內調用它。


編輯:

此外,而不是依靠try/catch語句來檢查你的路徑的當前狀態,可以直接檢查路徑。請參閱示例:https://stackoverflow.com/a/8238096/931379

+0

你說得對。我注意到了。在我的筆記本電腦上添加一個通話需要大約20ms。 – 2012-02-11 01:44:35

相關問題