Aracılığıyla paylaş


Ad Alanları

Derleyici, farklı öğe türleri için kullanılan tanımlayıcıları ayırt etmek için "ad alanları" ayarlar. Çakışmayı önlemek için her ad alanı içindeki adların benzersiz olması gerekir, ancak aynı ad birden fazla ad alanında görünebilir. Bu, öğelerin farklı ad alanlarında olması koşuluyla, iki veya daha fazla farklı öğe için aynı tanımlayıcıyı kullanabileceğiniz anlamına gelir. Derleyici, programdaki tanımlayıcının ilgili bağlamını temel alarak başvuruları çözümleyebilir.

Not

Bir ad alanının sınırlı C gösterimini C++ "ad alanı" özelliğiyle karıştırmayın. Daha fazla bilgi için bkz . C++ Dil Başvurusu'ndaki Ad Alanları .

Bu liste, C'de kullanılan ad alanlarını açıklar.

Deyim etiketleri
Adlandırılmış deyim etiketleri deyimlerin bir parçasıdır. Deyim etiketlerinin tanımları her zaman iki nokta üst üste ile takip edilir ancak etiketlerin case parçası değildir. Deyim etiketlerinin kullanımları her zaman hemen anahtar sözcüğünü gotoizler. Deyim etiketlerinin diğer adlardan veya diğer işlevlerdeki etiket adlarından ayrı olması gerekmez.

Yapı, birleşim ve numaralandırma etiketleri
Bu etiketler yapı, birleşim ve numaralandırma türü tanımlayıcılarının bir parçasıdır ve varsa, her zaman , veya structayrılmış sözcüklerini unionenumhemen takip eder. Etiket adları, aynı görünürlüğe sahip diğer tüm yapı, numaralandırma veya birleşim etiketlerinden ayrı olmalıdır.

Yapıların veya birleşimlerin üyeleri
Üye adları, her yapı ve birleşim türüyle ilişkili ad alanlarında ayrılır. Başka bir ifadeyle, aynı tanımlayıcı aynı anda herhangi bir sayıda yapıda veya birleşimde bileşen adı olabilir. Bileşen adlarının tanımları her zaman yapı veya birleşim türü tanımlayıcıları içinde gerçekleşir. Bileşen adlarının kullanımları her zaman üye seçimi işleçlerini (-> ve .) hemen izler. Bir üyenin adı yapı veya birleşim içinde benzersiz olmalıdır, ancak farklı yapıların ve birleşimlerin üyelerinin adları veya yapının adı da dahil olmak üzere programdaki diğer adlardan ayrı olması gerekmez.

Normal tanımlayıcılar
Diğer tüm adlar değişkenleri, işlevleri (resmi parametreler ve yerel değişkenler dahil) ve numaralandırma sabitlerini içeren bir ad alanına girer. Tanımlayıcı adlarının iç içe görünürlüğü vardır, böylece bunları bloklar içinde yeniden tanımlayabilirsiniz.

Typedef adları
Typedef adları aynı kapsamda tanımlayıcı olarak kullanılamaz.

Örneğin, yapı etiketleri, yapı üyeleri ve değişken adları üç farklı ad alanında olduğundan, bu örnekte adı geçen student üç öğe çakışmaz. Her öğenin bağlamı, programdaki her örneğin student doğru yorumlanmasını sağlar. (Yapılar hakkında bilgi için bkz. Yapı Bildirimleri.)

struct student {
   char student[20];
   int class;
   int id;
   } student;

student Anahtar sözcüğünden struct sonra göründüğünde, derleyici bunu bir yapı etiketi olarak tanır. student Üye seçimi işlecinden (-> veya .) sonra göründüğünde, ad yapı üyesine başvurur. Diğer bağlamlarda, student yapı değişkenine başvurur. Ancak, etiket adı alanını aşırı yüklemenin anlamı gizlendiğinden önerilmez.

Ayrıca bkz.

Program Yapısı