Trouble with callback with uimenus
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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?
0 comentarios
Respuesta aceptada
Jan
el 28 de Mayo de 2013
Editada: Jan
el 28 de Mayo de 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 comentario
Image Analyst
el 28 de Mayo de 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!
Más respuestas (0)
Ver también
Categorías
Más información sobre Interactive Control and Callbacks en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!