0

次のようなものです:

function [rv] = get_bla(m)
%#codegen
assert(isa(m,'char'));
assert(size(m, 1) >= 1);
assert(size(m, 1) <= 1024);

switch m
    case 'xyz' 
        rv = 1;
    case 'xyz1'   
        rv = 2; 
    otherwise
        error('Unexpected something');
end 

matlabコーダーのコンテキストで実際に可能ですか?

私は使っている:

codegen -config:dll get_bla

そして得る:

SWITCH 式のサイズが不定です。

「char 配列」は C/C++ では静的サイズでなければならないため、上記は不可能だと思いますか、それとも回避策はありますか?

4

1 に答える 1

1

ステートメントの代わりにif-ステートメントを使用してみてください。elseifswitch

if strcmp(m, 'xyz')
  rv = 1;
elseif strcmp(m, 'xyz1')
  rv = 2;
else
  error('unexpected');
end
于 2012-11-28T18:18:23.333 に答える