gpt4 book ai didi

c - 如何在机器级别或内存级别的编译器中实现变量的范围

转载 作者:太空狗 更新时间:2023-10-29 17:02:08 25 4
gpt4 key购买 nike

编译器如何实现变量的作用域?我的意思是,当我们说静态变量时,范围仅限于在定义静态变量的同一文件中定义的 block 或函数?这是如何在机器级别或内存级别实现的?

这个限制实际上是如何实现的?

如何在程序运行时解决这个范围?

最佳答案

在机器层面根本达不到。编译器在实际生成机器代码之前检查作用域。 C 的规则是由编译器实现的,而不是由机器实现的。编译器必须检查这些规则,而机器不会也不能。

关于编译器如何检查的非常简单的解释:

每当引入一个作用域时,编译器都会给它起一个名字,并将它放在一个结构(树)中,这样可以很容易地确定该作用域相对于其他作用域的位置,并将其标记为当前范围。声明变量时,会将其分配给当前范围。访问变量时,会在当前范围内查找它。如果未找到,则查找树以查找当前范围之上的范围。这一直持续到我们到达最顶层的范围。如果仍未找到该变量,则说明存在范围冲突。

关于c - 如何在机器级别或内存级别的编译器中实现变量的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13199778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com