2010-08-09 4 views
1

Possible en double:
Why are unnamed namespaces used and what are their benefits?Question sur l'espace de noms

namespace { 

// EINTR sucks. 
int close_no_eintr(int fd) { 
    int result; 
    do { 
    result = close(fd); 
    } while (result < 0 && errno == EINTR); 
    return result; 
} 

Dans le code ci-dessus, pourquoi il n'y a pas un nom après l'espace de noms dans la première ligne?

+0

en double de [Pourquoi namespaces anonymes utilisés et quels sont leurs avantages?] (Http://stackoverflow.com/questions/357404/anonymous-namespaces) –

Répondre

0

Il s'agit d'un unnamed namespace. Il empêche les noms de fuir le fichier courant, ce qu'ils feraient s'ils étaient déclarés globaux.

+0

« éléments définis dans un espace de noms sans nom ont une liaison interne. Plutôt que d'utiliser le mot-clé static pour définir les éléments avec un lien interne, définissez-les dans un espace de noms sans nom à la place. "quel est son sens par" lien interne "? – Kim

+0

@Jinx Liaison interne au fichier. Par opposition au lien externe, qui est lié à quelque chose dans un fichier différent. Regardez l'excellente réponse à la question que cette question a été marquée un dup de. – deinst