我的问题是,如果addpath类似于C中的#include。在C中如果不添加#include guard(#ifndef ...),将会有多个函数定义。但似乎MATLAB正在处理这个问题。
我使用这个方案不是多次调用addpath:
try
f(sample args);
catch err
addpath('lib');
end
但现在我认为没有必要。
答案 0 :(得分:5)
#include
添加特定标头文件。 addpath
只是在搜索路径中添加了一个文件夹,并且不会向您的程序添加任何代码。可以把它想象为添加目录以在C ++中搜索头文件(例如在Visual Studio中,它是“其他包含目录”和g ++,它是用-I
实现的。)
此外,我认为addpath
会检查文件夹是否已添加,因此您对addpath('lib')
的重复调用实际上没有做任何事情。
答案 1 :(得分:3)
对addpath
的多次调用不会创建多个函数,因此从正确的角度来看,多次使用addpath
没有问题。
但是,addpath
是一个相对较慢的操作。您不应该在正常操作期间可能多次调用的函数内调用它。
编辑:
此外,您可以直接检查路径,而不是依靠try / catch来检查路径的当前状态。请参阅此处的示例:https://stackoverflow.com/a/8238096/931379。