2012-02-10 8 views
4

私の質問は、addpathがCの#includeと似ているかどうかです。#include guard(#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'を使用していますか? –

+1

はい、 'addpath'はすでにパス上にあるディレクトリが存在するかどうかを調べる' path'関数を呼び出します。しかしそれは順序を変える。 – yuk

+0

@AndrewJanke:はい、でも、それはちょっと類推を混乱させます。私は '-I'のために行くつもりです。 – Jacob

3

addpathを複数回呼び出すと、複数の関数が作成されないため、正確性の観点からは、addpathを複数回使用しても問題はありません。

しかし、addpathは比較的遅い操作です。通常の操作で何度も呼び出される可能性のある関数内で呼び出さないでください。


編集:

また、むしろあなたのパスの現在の状態をチェックするためのtry/catchに頼るよりも、あなたがパスを直接確認することができます。以下の例を参照してください:https://stackoverflow.com/a/8238096/931379

+0

あなたはそうです。私はそれに気付く。 addpathへの一回の呼び出しは、私のラップトップで約20msかかる。 –

関連する問題