2015-06-15 2 views
0

Этот вопрос относится к Matlab coder внешняя функциональность. Некоторые функции, такие как fprintf, являются внешними в более старой версии Matlab и не являются неотъемлемой частью новых. Есть ли способ поддержать несколько версий Matlab, если coder.extrinsics разрешен только на верхнем уровне, и его невозможно поставить в if?Использование coder.extrinsics условно

ответ

2

Вы не можете условно выполнять некоторые функции extrinsic напрямую. Один из способов - использовать две разные функции, такие как fprintf_old и fprintf_new. fprintf_old будет иметь coder.extrinsic объявление, а затем вызывает fprintf. fprintf_new может вызывать fprintf без выражения extrinsic. Теперь вы можете выбирать между двумя вызовами, проверяя свою версию с условием, которое является постоянным во время компиляции. Например,

if coder.const(isOlderVersion()) 
    fprintf_old(); 
else 
    fprintf_new(); 
end 
1

В генерации кода, feval constructs an extrinsic call к функции, указанный в первом аргументе. Поскольку вы можете встраивать вызовы в feval внутри потока управления, его можно использовать для выборочного вызова функции по умолчанию и сохранения кода в одном исходном файле:

if isOlderVersion() 
    % Call fprintf extrinsically 
    feval('fprintf'); 
else 
    fprintf(); 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^