Préférez les namespaces anonymes aux static C - C++ - Programmation
Marsh Posté le 06-09-2003 à 01:31:17
ca peut en effet eviter les erreurs merci
Marsh Posté le 06-09-2003 à 04:40:51
euh, j ai pas tout capte
=> si tu veux pouvoir reutilise f ou g, il faut recreer un namespace non ??
gerne
Code :
|
=>c est comme ca ??
Marsh Posté le 06-09-2003 à 08:21:58
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 : |
Marsh Posté le 18-02-2004 à 01:02:38
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.
Marsh Posté le 29-07-2003 à 00:53:59
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
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!
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.
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.
Message édité par Taz le 06-09-2003 à 12:43:19