Ограничения указателя на функцию для генерации кода
Когда вы используете указатели на функцию в MATLAB® код, предназначенный для генерации кода, придерживайтесь следующих ограничений:
Не используйте ту же связанную переменную, чтобы сослаться на различные указатели на функцию
В некоторых случаях использование той же связанной переменной, чтобы сослаться на различные указатели на функцию вызывает ошибку времени компиляции. Например, этот код не компилирует:
function y = foo(p)
x = @plus;
if p
x = @minus;
end
y = x(1, 2);
Не передавайте указатели на функцию или от coder.ceval
Вы не можете передать указатели на функцию как входные параметры к или выходные параметры от coder.ceval
(MATLAB Coder). Например, предположите тот f
и str.f
указатели на функцию:
f = @sin;
str.x = pi;
str.f = f;
Следующие операторы приводят к ошибкам компиляции:
coder.ceval('foo', @sin);
coder.ceval('foo', f);
coder.ceval('foo', str);
Не сопоставляйте указатель на функцию с внешней функцией
Вы не можете создать указатель на функцию, который ссылается на внешнюю функцию MATLAB.
Не передавайте указатели на функцию или от внешних функций
Вы не можете передать указатели на функцию или от feval
и другие внешние функции MATLAB.
Не передавайте указатели на функцию или от функций точки входа
Вы не можете передать указатели на функцию как входные параметры к или выходные параметры от функций точки входа. Например, рассмотрите эту функцию:
function x = plotFcn(fhandle, data)
assert(isa(fhandle,'function_handle') && isa(data,'double'));
plot(data, fhandle(data));
x = fhandle(data);
В этом примере, функциональном plotFcn
получает указатель на функцию и его данные как входные параметры. plotFcn
попытки вызвать функцию, на которую ссылается fhandle
с входом data
и постройте результаты. Однако этот код генерирует ошибку компиляции. Ошибка указывает что функциональный isa
не распознает 'function_handle'
как имя класса, когда названо в функции MATLAB, чтобы задать свойства входных параметров.
Не пытайтесь просмотреть указатели на функцию от отладчика
Вы не можете отобразить или смотреть указатели на функцию от отладчика. Указатели на функцию появляются как пустые матрицы.
Не используйте указатели на функцию для Сигналов Simulink, параметров или памяти хранилища данных
Можно использовать указатели на функцию в блоке MATLAB Function. Вы не можете использовать указатели на функцию для Simulink® сигналы, параметры или память хранилища данных.
Похожие темы