Azzera filtri
Azzera filtri

Trouble with callback with uimenus

1 visualizzazione (ultimi 30 giorni)
Hanif
Hanif il 28 Mag 2013
function startup
File = uimenu(fig,'Label','File');
Message = uimenu(File,'Label','Message','Callback',@display);
end
function display(hObj,event)
disp('Hello world')
end
When this runs through and I click on the menu I get an error saying the following:
Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N)
to change the limit. Be aware that exceeding your available stack space can
crash MATLAB and/or your computer.
Error in CreatingMenus>display
Error while evaluating uimenu Callback
Am I missing something really obvious?

Risposta accettata

Jan
Jan il 28 Mag 2013
Modificato: Jan il 28 Mag 2013
Yes, you are missing something more or less obvious: When a line does not end with an semicolon, the built-in function display() is called to show the results in the command window. When you shadow the original display() function with a user-defined one, this function is called. And when it contains a line without a trailing semi-colon, it calls itself recursively.
Shadowing built-in function is a problem frequently. Therefore I'd avoid names like "display" and "startup" might lead to unexpected effects also.
Btw. you can investigate such problems by using the debugger. Set a breakpoint in the code and step through the program line by line. Then you can find out, where the recursion appears.
  1 Commento
Image Analyst
Image Analyst il 28 Mag 2013
Good to know. Sometimes you don't know you've overwritten a built-in function until you have a major fecal/turbine impact. I didn't know display() was a built in function, and only sometimes do I do "which -all myFunctionName" to see if it's a built-in function. I should have noticed startup when I read his post, but I didn't - good catch on your part. He really won the exacta when he picked two reserved function names!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Startup and Shutdown in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by