В языке MATLAB ® переменные могут динамически изменять свои свойства во время выполнения, чтобы использовать одну и ту же переменную для хранения значения любого класса, размера или сложности. Например, в MATLAB работает следующий код:
function x = foo(c) %#codegen if(c>0) x = 0; else x = [1 2 3]; end disp(x); end
Однако статически типизированные языки, такие как C, должны иметь возможность определять переменные свойства во время компиляции. Поэтому для генерации кода C/C + + необходимо явно определить класс, размер и сложность переменных в исходном коде MATLAB перед их использованием. Например, перепишите вышеупомянутый исходный код с определением для x:
function x = foo(c) %#codegen x = zeros(1,3); if(c>0) x = 0; else x = [1 2 3]; end disp(x); end
Дополнительные сведения см. в разделе Рекомендации по определению переменных для генерации кода C/C + +.