4 votes

Envelopper les bibliothèques externes dans des espaces de noms

J'écris une bibliothèque à utiliser dans mes projets. J'espérais y intégrer la bibliothèque standard c dans l'espace de noms de ma bibliothèque et dans un espace de noms cstd pour éviter que ses fonctions se retrouvent dans l'espace de noms global. Cependant, d'après une question précédente que j'ai posée et d'après ce que j'ai testé, je ne peux pas simplement #inclure tout dans un espace de nom. Existe-t-il un moyen de le faire ?

3voto

Marlon Points 11528

J'en doute, sauf si vous voulez tout réécrire.

Le langage C lui-même n'a pas de concept d'espace de noms, donc tout ce que la bibliothèque standard C utilise doit s'appuyer sur le fait que ce qu'elle recherche réside dans l'espace de noms global.

Si vous vous contentez d'entourer vos #includes d'un espace de nom, le compilateur ne pourra rien trouver car il ne saura pas dans quel espace de nom chercher.

1voto

bob2 Points 787

L'approche habituelle consiste à placer les includes tiers dans les fichiers d'implémentation pour éviter qu'ils ne polluent votre API.

myapi.hpp

void coolthing( int howcool );

myapi.cpp

#include <coollib.h>

void coolthing( int howcool )
{
    coollib_coolthing( howcool );
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X