anonymous namespace et static

anonymous namespace et static - C++ - Programmation

Marsh Posté le 30-08-2012 à 12:33:22    

bonjour,

 

j'aimerais savoir si ceci a du sens :

 
Code :
  1. namespace
  2. {
  3.    static int a = 34;
  4. }
 

est ce que static est redondant dans ce cas ?

 


Autrement, doit on utiliser les anonymous namespace dans un .cpp ou dans un .h ?

 

merci ;)

Message cité 1 fois
Message édité par in_your_phion le 30-08-2012 à 12:37:19
Reply

Marsh Posté le 30-08-2012 à 12:33:22   

Reply

Marsh Posté le 30-08-2012 à 12:38:12    

Il y a au moins une difference (plus ou moins anectodique). En C++03, le static empeche &a d'etre utilise comme parametre template, ce n'est plus le cas en C++11.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 30-08-2012 à 12:40:08    

Quel est ton but?
 
Là comme ça, je vois vraiment pas l’intérêt de ton namespace et ce que tu souhaites faire.
 

Reply

Marsh Posté le 30-08-2012 à 13:10:45    

in_your_phion a écrit :

Autrement, doit on utiliser les anonymous namespace dans un .cpp ou dans un .h ?


 
Je vois difficilement l'utilité d'un namespace anonyme dans un .h ... Comme pour les globales statiques d'ailleurs.


---------------
last.fm
Reply

Marsh Posté le 30-08-2012 à 13:12:15    

Fifty-One a écrit :

Quel est ton but?
 
Là comme ça, je vois vraiment pas l’intérêt de ton namespace et ce que tu souhaites faire.
 


c'est juste une question théorique, vraisemblablement. Les namespaces anonymes sont une alternative au mot clé static pour assurer que la portée d'une variable est limitée à une unité de compilation.


Message édité par theshockwave le 30-08-2012 à 13:12:30

---------------
last.fm
Reply

Marsh Posté le 12-09-2012 à 13:55:36    

salut
oui c'est effectivement une question "théorique"
 

theshockwave a écrit :


 
Je vois difficilement l'utilité d'un namespace anonyme dans un .h ... Comme pour les globales statiques d'ailleurs.


 
est ce que tu pourrais m'en dire un peu plus là dessus ?
 
merci :P

Reply

Marsh Posté le 12-09-2012 à 14:31:48    

Les .h c'est pour mettre en commun ce qui doit se retrouver dans plusieurs unites de compilation. Les namespaces anonymes c'est ce qui est propre a une unite de compilation. On doit pouvoir trouver des cas ou un namespace anonyme dans un .h est sense, mais c'est pas courant.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed