Yığının ne olduğunu ve nasıl çalıştıklarını biliyorum. Ayrıca, her işlevin kendi yığında bellekte ayrıldığını biliyorum ve bu da kapsamı oluşturur. ama kafamı karıştıran şey, derleyicinin bu isimlerin bu kapsamda nasıl beyan edildiğini öğrenmesi. verilen isim için bir giriş varsa bu bütün yığını ve kontrolleri izlerken yapar (o yorucu görünüyor) bu kodu göz önünde bulundurun:. Fonk yığını bir ama girdisini içerecektirDerleyici kapsamı nasıl çözer?
void func(int a)
{
cout<<a;
cout<<b;
}
burada derleyici, b adıyla karşılaşır, yığını kontrol eder ve b için bir giriş olmadığını öğrenir. şimdi soru nasıl kontrol edeceği, bütün yığını açıyor mu. ve Bu işlev b içeren başka bir işlev içinde bildirilirse, diğer tüm yığınları da açmak zorundadır.
Bu işlevin kendi yığını yok. İşlev, işlem yığını üzerinde bir yığın çerçevesi ayırır. Bu, çalışma zamanında gerçekleşir, zamanı derlemez. Aşağıdaki yanıtta belirtildiği gibi, derleyici, kapsam sorunlarını çözmek için sembol tablolarının bir hiyerarşisini (veya mantıksal eşdeğerini) kullanır. –