【发布时间】:2018-06-25 18:38:55
【问题描述】:
我正在 Linux 上使用 Matlab R2018a。我收到警告消息:
“警告:局部变量的值可能已更改为与全局变量匹配。未来版本的 MATLAB 将要求您在使用该变量之前将变量声明为全局变量。”
警告伴随着文件名和行号,但那一行有几个变量,所以我想知道消息指的是哪一个。
有没有办法找出警告所抱怨的变量?
有没有办法将警告变成错误?也许这会让解决问题变得更容易,而不是仅仅容忍它。
【问题讨论】:
-
在 MATLAB 2017b 中,您也会收到该警告,但只有当您实际使用变量 before 时,您才将其声明为
global。无论你想在哪里使用全局变量,你都必须先将它声明为global!该警告仅表示在以后的版本中你不能再写foo = 3; global foo;,但你必须在使用它之前将其声明为全局变量,无论是作为局部变量还是全局变量。 -
Robert,触发警告的那一行是类似于
global foo bar baz的行,不是吗?如果您可以发布生成警告的函数,并告诉我们是哪一行生成了此警告,那就太好了。我猜它使用局部变量foo进行一些计算,然后将foo声明为全局变量。更改局部变量的名称将避免警告。 -
@CrisLuengo 是的,和你猜的一样。干得好!
-
罗伯特,我已经更新了我的答案,它现在指出了一种找出哪个变量给你带来麻烦的方法。