Variable Not fully defined on some execution path error

46 ビュー (過去 30 日間)
John Petersen
John Petersen 2021 年 3 月 11 日
コメント済み: John Petersen 2021 年 3 月 11 日
I have some code that is inside a simulink block that gets an error when it's compiled. It says a variable is not fully defined on some execution paths, but it's not true.
Here's a simplified version of the code:
function myfunc(logicA, logicB)
A = logicA;
B = logicB; % also input from the function
if A
X = 1;
elseif B
X = 2;
end
if (A || B)
Y = X;
end
It complies fine if I change it to
function myfunc(logicA, logicB)
A = logicA;
B = logicB; % also input from the function
X=2
if A
X = 1;
end
if (A || B)
Y = X;
end
It looks like the compiler doesn't realize that it doesn't need X if (A || B) is false?

採用された回答

Walter Roberson
Walter Roberson 2021 年 3 月 11 日
disp(myfunc(1,1))
1
disp(myfunc(1,0))
1
disp(myfunc(0,1))
2
disp(myfunc(0,0))
Output argument "Y" (and maybe others) not assigned during call to "solution>myfunc".
function Y = myfunc(logicA, logicB)
A = logicA;
B = logicB; % also input from the function
if A
X = 1;
elseif B
X = 2;
end
if (A || B)
Y = X;
end
end
  2 件のコメント
Walter Roberson
Walter Roberson 2021 年 3 月 11 日
The code would only be acceptable if you do not unconditionally use Y afterwards.
John Petersen
John Petersen 2021 年 3 月 11 日
thanks.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange2-D and 3-D Plots についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by