Adsız ad alanları, tanımlayıcı çeviri birimini yerel kılmak için bir yardımcı programdır. Bir ad alanı için çeviri birimi başına benzersiz bir ad seçer gibi davranırlar:
namespace unique { /* empty */ }
using namespace unique;
namespace unique { /* namespace body. stuff in here */ }
Boş gövdeyi kullanmanın ek adımı önemlidir, bu nedenle ::name
, kullanım yönergesi zaten gerçekleştiğinden , ad alanı gövdesi içinde bu ad alanında tanımlanan tanımlayıcılara zaten başvurabilirsiniz .
Bu help
, birden fazla çeviri biriminde bulunabilen (örneğin) adlı ücretsiz işlevlere sahip olabileceğiniz anlamına gelir ve bağlantı zamanında çakışmazlar. Etki, static
tanımlayıcıların beyanına koyabileceğiniz C'de kullanılan anahtar kelimeyle neredeyse aynıdır . Adsız ad alanları, yerel bir çeviri birimi bile oluşturabilen üstün bir alternatiftir.
namespace { int a1; }
static int a2;
Her ikisi de a
yerel çeviri birimidir ve bağlantı zamanında çakışmaz. Ancak fark, a1
anonim ad alanındaki benzersiz bir ad almasıdır.
Comeau-computing adresindeki mükemmel makaleyi okuyun Neden statik yerine adsız bir ad alanı kullanılıyor? ( Archive.org aynası ).
static
. Lütfen karşılaştırır__attribute__ ((visibility ("hidden")))
mısınız?