En C, a menudo / a veces (como cuestión de estilo) usa una static
variable de alcance de archivo donde usaría una variable miembro de clase privada en C ++. Al escalar a programas multiproceso, simplemente agregar thread_local
C11 o la extensión de larga duración se __thread
adapta bien. Sé que puedes hacer exactamente lo mismo en C que en C ++ poniendo todo dentro de ay struct
haciendo un conjunto de funciones que tome un puntero a eso struct
como primer argumento. Algunas bibliotecas hacen esto ampliamente. Pero mi estilo personal es mantener lo struct
más pequeño posible, si es necesario.
A menudo leo o escucho a algunas personas argumentando que las variables 'globales' son muy malas. Sigo sus razones, y la mayoría de sus argumentos parecen estar relacionados con extern
variables globales en términos de C. Lo que dicen es ciertamente cierto. A veces uso 1 o 2 de las extern
variables declaradas en todo el programa cuando simplificará mucho las cosas y cuando es fácil hacer un seguimiento de ellas, pero ir más allá fácilmente hará que un programa sea impredecible.
¿Qué pasa con las static
variables? ¿Siguen teniendo el mismo problema que las variables globales "reales"? Tal vez ni siquiera tengo que hacer esta pregunta y continuar si creo que lo que estoy haciendo es correcto, pero hoy vi otro tipo de publicación 'Las variables globales son MALAS', y finalmente vine aquí pensando que tal vez sea un derecho lugar para tal tipo de pregunta. Cual es tu pensamiento
Esta pregunta no es un duplicado de esto porque esta pregunta hace referencia a variables locales extern
y static
no locales, mientras que la otra pregunta trata sobre static
variables de alcance de archivo y alcance de bloque .