C ++ ha namespace per evitare collisioni di cose con lo stesso nome.
Le guardie di testa hanno uno scopo diverso. Impediscono a include
di utilizzare la stessa intestazione due volte. Tuttavia, possono soffrire dello stesso problema: cosa succede se due guardie di intestazione di file diversi usano lo stesso nome popolare? Cosa succede se ci sono due librerie che hanno una classe LinkedList
:
#ifndef LinkedList_H
#define LinkedList_H
// stuff
#endif
Perché questi due mezzi identificano univocamente un codice così diverso?
È come una caratteristica linguistica sofisticata su un lato e un aggeggio macro con una stringa arbitraria sull'altro.
Perché i conflitti di denominazione non rappresentano un problema per le guardie di intestazione? Non dovrebbe lo spazio dei nomi far parte della guardia di intestazione, per renderlo unico come lo spazio dei nomi, in modo che non solo prevenga il duplicato% diinclude
ma anche i conflitti di denominazione?