Re: variables globales.



On Thu, 2005-06-23 at 13:12 -0400, Germán Poó Caamaño wrote:
> Le jeudi 23 juin 2005 à 13:07 -0400, Alejandro Valdes J. a écrit :
> > Estimados.
> > 
> > ¿como puedo hacer para dejar de utilizar una variable global?, si tengo
> > la siguiente situacion:
> > 
> > gdouble n_var;
> > 
> > funcionX(){
> > 
> > 	n_var = gtk_spin_button_get_value (spin);
> > 	
> > 	/* evalua cada elemento del modelo */
> > 	gtk_tree_model_foreach (model,funcionY,una_estructura);
> > }
> > 
> > funcionY(model,path,iter,una_estructura){
> > 	
> > 	/* se utiliza la  variable n_var para filtar algunos valores */
> > 	....
> > 	
> > }
> > 
> > lo podria solucionar obteniendo el valor del spin cada ves en la
> > funcionY(), pero no es optimo.
> 
> Definela como static.
> 
> static gdouble _var;
> 
> De esta forma, esa variable sólo existirá dentro del módulo
> (archivo.c/.o).  Es lo que se emplea cuando tienes variables que
> no quieres que sean gloables, pero quieres que dos o más
> funciones la compartan.

IIRC, así no puedes asegurar que dos instancias concurrentes del objeto
no compartan el valor, que es el mayor problema de usar una variable
global acá. Supongo que Alejandro necesita una instancia de esa variable
per instancia del módulo.

¿Quizá una estructura?

typedef struct _MyStruct {
    objeto *object; /* el objeto a pasar en foreach */
    int n_perc;
    ...             /* otros datos */
} MyStruct;

Luego la inicializas y la usas de argumento en foreach.

No estoy seguro de que sea la manera correcta de hacerlo, pero así
aseguras que cada instancia del módulo tendrá sus propios valores.

Claudio
-- 
Claudio Saavedra <csaavedra alumnos utalca cl>

Attachment: signature.asc
Description: This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]