C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C编译器 – 解析类成员的名称大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当编译器看到这段代码时:

someClass foo;
int x = foo.bar;

检索bar值的过程是什么?即它会看一些代表类定义的数据结构吗?如果是这样的数据结构是在编译时还是在运行时生成的?

解决方法

当编译器看到someClass的定义时,该过程开始.基于该定义,它构建了一个内部结构,其中包含someClass中字段的类型,以及someClass方法代码位置.

当你写someClass foo时;编译器找到与someClass的构造函数对应的代码,并创建@L_197_9@该代码的机器指令.在下一行,你写int x = foo.bar.这里编译器编写机器指令为int分配堆栈空间,然后查看someClass的数据结构.该数据结构将告诉它从foo对象的开头到bar的字节偏移量.然后编译器写入机器代码以将对应于bar的字节复制到x的存储器中.所有这些机器代码都写入您的可执行文件.

通常,一旦编译完成,表示someClass和其他定义的数据结构将被丢弃.你剩下的只是一套机器指令.这些指令在您实际运行程序时执行,因此someClass的构造函数和将foo.bar复制到x的代码cpu执行,而不会明确了解对象的结构.

这是一般情况.当您在调试器下运行代码并进行优化时,会出现一些特殊情况,但这通常会发生这种情况.

大佬总结

以上是大佬教程为你收集整理的C编译器 – 解析类成员的名称全部内容,希望文章能够帮你解决C编译器 – 解析类成员的名称所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。