Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1496 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Préférez les namespaces anonymes aux static C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Préférez les namespaces anonymes aux static C

n°470382
Taz
bisounours-codeur
Posté le 29-07-2003 à 00:53:59  profilanswer
 

je veux pas entendre de 'les variables globales ça pue'.
 
pré-requis: connaissance sur les namespace (pour comprendre)
 
souvent, dans une même unité de compilation (un fichier quoi) on définit et utilise plusieurs fonctions/variables/classes localement utilisées. c'est à dire que ces éléments ne sont et ne doivent être utilisés qu'à l'intérieur de votre fichier.  
 
vous êtes un programmeur C ou vous avez été mal enseigné: vous utilisez le spécificateur de portée 'static' pour rendre vos variables/fonctions 'privées' à votre fichier
 

Code :
  1. static int i;
  2. static void f();


 
2 constats rapides: vous avez souvent des problèmes avec vos objets statiques mal initialisés, vous n'arrivez pas à définir des classes privées au fichier.
 
le C++ apporte une réponse élégante et passe partout!
 

Code :
  1. namespace
  2. {
  3.   int i;
  4.   class Foo;
  5.   void f();
  6. }


 
cela a pour effet de placer vos déclarations dans un référenciel lexical privé, donc inaccessible depuis d'autres unités de traduction, votre compilateur s'occupant de nommer sans équivoques les différents namespaces anonymes de vos fichiers.  
 
 

Code :
  1. namespace
  2. {
  3.   int i;
  4.   class Foo;
  5. void f();
  6. }
  7. namespace
  8. {
  9.   void g();
  10. }


 
ici, f() et g() sont déclarées dans le même namespace, puisque la déclaration des namespaces est incrémentale.
 
depuis le reste du code de votre fichier, appelez simplement ces éléments sans préfixes.
 

Code :
  1. f();
  2. g();
  3. i=3;


Message édité par Taz le 06-09-2003 à 12:43:19
mood
Publicité
Posté le 29-07-2003 à 00:53:59  profilanswer
 

n°509136
blackgodde​ss
vive le troll !
Posté le 06-09-2003 à 01:31:17  profilanswer
 

ca peut en effet eviter les erreurs :) merci :jap:


---------------
-( BlackGoddess )-
n°509141
slvn
Posté le 06-09-2003 à 04:40:51  profilanswer
 

euh, j ai pas tout capte :??:
 
=> si tu veux pouvoir reutilise f ou g, il faut recreer un namespace non ??
gerne
 

Code :
  1. hello
  2. {
  3.   void f(int x) { ..........}
  4. }
  5. hello
  6. {
  7.    f(25);
  8. }


 
=>c est comme ca ??

n°509144
Taz
bisounours-codeur
Posté le 06-09-2003 à 08:21:58  profilanswer
 

non.
 
edit : je fais des articles pas des cours. j'aborde des points qui ne sont pas évoqués dans les livres ou souvent mal expliqués ainsi que des astuces. si je commence, je m'en sortirais plus. les namespace sont à la base, au même niveau que les classes. achète toi un bouquin ;)
 
edit #2 : d'ailleurs

Taz a écrit :


pré-requis: connaissance sur les namespace (pour comprendre)


Message édité par Taz le 06-09-2003 à 12:44:13
n°646322
Taz
bisounours-codeur
Posté le 18-02-2004 à 01:02:38  profilanswer
 

je rajoute que les namespaces anonymes ont un autre avantage : ça permet de déclarer des variables privées à l'unité de traduction avec un linkage extern.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Préférez les namespaces anonymes aux static C

 

Sujets relatifs
map static[C++ | VS .NET] MFC, ca va pas en "MFC in shared DLL" mais static oui
[Visual C++] Definir le texte d'un "static text" controlPetite question a propos des namespaces
Un petit probléme avec les methodes Static et Non-Static...[java] Methode et champs static
[PHP] Si vous avez le choix préférez vous PDFlib ou FPDF ??[JAVA]static..........
[QT] Premiers pas... (titre d'une fenetre, static link)MFC + librairie static maison ...
Plus de sujets relatifs à : Préférez les namespaces anonymes aux static C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR