![]() |
Variables globales con C Tengo un tremendo problema con el alcance de variables globales. Lo que quiero es en una cabecera (header.h) declarar todas mis variables globales para despues en todos los archivos que incluya esta cabecera, puedan tener acceso a esta variables globales. Para eso use static. Todo funcionaba bien con static, pero despues me di cuenta que ocaciona errores con los valores de las variables en distintos archivo. entonces me dijieron que con el extern se podia hacer esto. Segun la documentacion, declaro una variable en donde sea y despues en otro archivo SIN incluir la cabecera en donde se declaro la variable global, usar extern y el nombre de la variable(claro, y si tipo). Pues no me funciona. Tengo una cabecera con prototipos de funciones y declaracion de variables y al usar extern en otros archivo, me dice que la variable ha sido redefinida. Lo que quiero lograr es que pueda usar mis variables de la cabecera en todos mis archivos y cabeceras. Ayuda porfavor. Saludos |
Estas encontrando problemas por que lo que quieres hacer es una chapuza que va en contra del concepto de programación extructurada. Las variables globales están prohividas, no te digo ya lo que pretendes hacer. Pero bueno, si quieres hacer lo que quieres hacer, yo lo haria así: Declararia las variables en el .c donde esté el main como variables normales: int a; Luego las declararia como extern allí donde las quiera usar: extern int a; Y listo. NUNCA se me ocurriria declarar una variable en un .h pues no tiene sentido. A la que pongas 2 veces una include a ese .h el compilador te dirá que las variables ya están declaradas. Entonces que sentido tiene una include que solo puede ponerse una vez en todo el hilo de ejecución? Las variables estáticas mantienen su valor durante toda la ejecución, son otra historia. Por ejemplo, una variable estática en una función es válńida solo dentro de la función, pero el valor de la variable permanecerá en todas las llamadas a la función pues la variable no es destruida al finalizar la función sino que permanece en memoria aunque no sea accesible. Mi recomendación: no usarlas a no ser que tengas muy muy claro que es lo que estás haciendo. Mi última recomendación: no usar variables globales: arrastra los valores que quieras como parámetros de funciones aunque sea mas engorroso, es lo correcto. |
Bueno, el problema es de que estas variables tienen que ser modificadas en todos los archivo, aparte eso de referencia con punteros y todo eso me fastidia, claro que antes si lo usaba, pero para este proyecto decidi hacerlo con variables globales. Saludos |
| La zona horaria es GMT -6. Ahora son las 23:33. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.