In C, I handle it by creating file-scoped variables. not quite global, but not local either. If you want to remove as much risk as possible, I'd recommend declaring a file-scoped variable in a file with only the few functions that actually need to access the variable directly. (then, call it a "module". haha) example: //////////////////////////////////////////////// file starts #include <whatever.h> static int filescoped_special_timer_id = 0; void start_timer( void ) { filescoped_special_timer_id = whatever( callback ); } /* only call this from within this file or through the callback */ static void callback( void ) { /* do something */ } void remove_timer( void ) { whatever_3( filescoped_special_timer_id ); } //////////////////////////////////////////////// file ends nothing outside of the file can access filescoped_special_timer_id directly. It's only accessible through this "module's public interface" which is declared in the header file. This scope is analogous to C++'s "private" class variables, while the "module" (aka, the file) is analogous to a C++ class. - Anna On Sat, Jul 08, 2006 at 09:23:54AM +0800, chao yeaj wrote: > Hello,all > You know ,we can register a timeout function using g_timeout_add > and g_timeout_add return an ID > > And,we must mannually remove the timeout function using g_source_remove > > > The problem is,in my application,there are several timeout > functions ,in many modules > > In my application,when and how to remove the timeout function is > depents on many conditions > > I have no idea about how to store the ID returned by > g_timeout_add,I think using global variable is not a good idea > > How to mange the id? I need your advise! > Any comments would be much appreciated , thanks in advance ! > _______________________________________________ > > gtk-list@xxxxxxxxx > http://mail.gnome.org/mailman/listinfo/gtk-list _______________________________________________ gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list