Aunque me gustaría evitar variables globales como la peste, ya que nuestro software no puede ser multiproceso de manera efectiva debido a la gran dependencia de las variables globales, tengo algunas sugerencias:
Usa un Singleton. Le permitirá mantener limpio el código y el acceso. Parte del problema con una variable global es que no sabes qué código lo ha modificado. Puede establecer el valor de global en alguna parte de su función confiando en la esperanza de que nadie más lo cambie, pero funcione sus llamadas de código, fooA, lo cambie y ahora su código esté a) roto, yb) difícil de depurar.
Si tiene que usar una variable global sin tocar el patrón singleton, mire la respuesta de fupsduck.
Independientemente de si se utiliza un 'Singleton', uno de los problemas sigue siendo que ahora tiene una orden de inicialización potencial'/destrucción fiasco' a punto de ocurrir ... incluso en un solo programa de roscado. Dicho esto, sé que a veces es mucho más fácil, especialmente cuando deseas promover el desacoplamiento. –