Variables estáticas vs no estáticas en el espacio de nombres
Tengo un espacio de nombresfoo
que contiene un número enterobar
, declarado así ...
foo.h:
namespace foo {
int bar;
}
Ahora si incluyofoo.h
En un solo archivo, esto funciona bien. Pero surge un problema cuando incluyofoo.h
de dos o más archivos: me sale un error de vinculador. Me di cuenta de que si declarobar
comostatic
, Puedo incluirfoo.h
en más de un archivo. Esto me parece extraño, porque no sabía que se podía declarar una variable estática dentro de un espacio de nombres. (¿y eso que significa?)
¿Por qué funciona esto? Y lo más importante, ¿por qué?no hace funcionasin static
? Que hacestatic
significa cuando se utiliza en unanamespace
?