c++ - C++ 编译器如何编译变量名?

标签 c++ variables compiler-construction

<分区>

我知道我没有说清楚。我认为,我的疑问可以总结为:

在可执行文件(机器代码)中,“变量”是如何表示的?它们是静态内存地址吗?编译器是否给每个人一个特定的“名字”(或者只保留你给他们的名字)?

用代码表示:

 int x=5;
 //Bunch of code
 cin>>y;
 cout<<x+1;

每台机器中的程序如何知道哪个地址将保存值 5、保存输入的值、将其现在保存的值加 1 并最终打印相同的值。

--若昂

最佳答案

它是特定于实现的。

通常,变量的位置将基于各种因素和优化。它们可能根本不存在于 RAM 中,因为它们可能被优化为完全存在于寄存器中,或者完全被优化掉。

变量名在运行时不存在;它们在编译过程中被丢弃。但是,编译器可能会发出存储在应用程序二进制文件中的调试信息,以允许开发人员调试应用程序。不过,这通常会在发布版本中删除。

我不知道 Gameshark 的细节。但在许多情况下,可以通过查看应用程序的机器代码来确定特定变量的位置。

关于c++ - C++ 编译器如何编译变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9351698/

相关文章:

c++将一维数组与二维数据一起使用

javascript - 将多个变量插入单个函数 Javascript

sql - 在数据库上创建一个变量来保存全局统计信息

c++ - 将变量数据发送到其他类时出现问题

compiler-construction - 编译器、解释器和两者的例子

c++ - 初始化时不会调用任何复制/move 构造函数/赋值

c++ - dwPageSize 和 dwAllocationGranularity 之间的关系

c# - Reflection.Emit.ILGenerator::Emit,从第三方.net 库调用方法

java - 以 Java 运行一个简单的文本文件

c++ - C++ 中的模板类和函数重载