我想知道什么确实发生在编译器级别时,我声明一个变量/函数?我试着在网上找到它。但是我只能获得有关声明与定义之间区别的信息。当我在编译器级声明一个变量时会发生什么?
0
A
回答
2
编译器进入可变定义行到适当范围的符号表,其中包含的名称,类型,改性剂,...
0
编译器基本上保留的标识符,并注意到不同的特性,如数据类型,程序区域(范围)的范围,“已知”的位置以及其他属性,例如生命周期,可访问性,命名空间......此信息输入到表中。
从此,在同一范围内对该标识符的引用将根据该声明进行解释并检查一致性。如果在使用标识符之前没有看到任何声明,编译器将发出一条错误消息并自行尝试定义,以便继续进行编译。
在程序的某个地方,必须定义相同的实体。除了声明之外,定义将通过映射一些存储空间来“体现”标识符并为其分配一个初始值。链接器需要这些附加信息。如果缺失,编译器将保持沉默,因为程序在语法上是有效的。只有链接器会投诉。
相关问题
- 1. 当我编译时会发生什么?
- 2. 当我们声明变量时,实际上编译器会做些什么?
- 3. 在Ruby中声明变量时后台会发生什么?
- 4. 为什么编译器说我没有声明我的变量?
- 5. 当我们在JavaScript中声明Array(4)时会发生什么?
- 6. 我的声明会发生什么?
- 7. 当我没有正确声明变量时,使VB编译器发出警告
- 8. 当用一个方程声明一个变量时,内存分配会发生什么?
- 9. 当你声明一个对象时堆上发生了什么?
- 10. 当我们将2个值赋给同一个变量时会发生什么?
- 11. 当声明了$$ [object name]时会发生什么?
- 12. 编译器错误变量声明
- 13. 当我回显变量时,幕后会发生什么?
- 14. 当实现父接口声明一个嵌套接口时会发生什么
- 15. 当你声明一个具有空边界的数组时会发生什么
- 16. EXC_BAD_ACCESS当声明一个变量时
- 17. 每当我声明一个枚举,它不会编译
- 18. 当我告诉printf打印一个变量时会发生什么?
- 19. 当我们抛出一个对象/变量来捕捉时会发生什么?
- 20. 当我们在Javascript中重新声明对象时会发生什么?
- 21. 当你多次声明同一个对象/变量时会发生什么(新手)
- 22. 为什么编译器会在上面的“if”语句中声明的变量说“未声明的标识符”?
- 23. 当变量超过32个时,寄存器会发生什么变化?
- 24. 当你在JavaScript中的函数声明中声明.autoCurry()会发生什么?
- 25. 当我在一个double中使用goto时会发生什么?
- 26. 编译时为什么我的变量报告为“未声明的标识符”?
- 27. 当我ping 127.0.0.1时会发生什么
- 28. 编译器声称变量不明确,不会运行
- 29. 为什么编译器认为这个变量是未声明的?
- 30. 将一个Objective C对象转换为另一个时,编译器级别会发生什么
“在编译器级别声明变量/函数”请解释它的含义。我所知道的任何语言都使用这样的术语。也许一个例子会有所帮助。 –
例如,extern int var表示我们正在声明一个变量,而int var = 1表示我们正在定义它。现在我明白了,当我们定义一个意味着内存分配给它的变量。当我们声明一个变量时,编译器级会发生什么? – AlienOnEarth
@n.m .:你应该阅读“什么时候发生在编译器级......”。 –