c - 诸如全局整数之类的宏在内存中存储在哪里?
问题描述
我试图了解事物在内存中的存储位置,例如全局变量和静态变量(.data,如果未初始化为零)等。
我试图找到/考虑的是一个宏,如下所示:
#define thisInteger 100
这可以使用 objdump 找到吗?
此外,如果我将其分配给一个新变量,如下所示,它将在哪里找到(在 .data 中猜测):
#define THIS_INTEGER 100
int newVariable = THIS_INTEGER;
解决方案
宏不是变量,因此它们不会存储在任何地方。当您这样做时#define thisInteger 100
,C 预处理器会运行源代码并替换thisInteger
为整数文字100
。询问thisInteger
存储在哪里与询问存储在哪里相同100
。要验证这一点,请尝试类似&thisInteger
. 它不会编译,因为它&100
是非法的并且没有意义。
这可以使用 objdump 找到吗?
不。预处理是在编译之前完成的复制粘贴处理。
此外,如果我将其分配给一个新变量,如下所示,在哪里可以找到
取决于您定义变量的位置。
推荐阅读
- node.js - 我正在尝试连接到 node.js,但我在 webstorm 中遇到了一些错误
- python - 如何仅针对类实例从子类方法更改python父类中的变量值
- ruby-on-rails - 为什么我必须把条件放两次?
- c# - 使用 C# asp.net / Net 4.7 为 HA 缓存大型对象
- excel - Excel VBA试图将数组与通配符匹配
- shell - 使用shell按字母顺序对多行记录进行排序
- asp.net - 如何在 Windows 窗体中添加 System.Web
- c# - 创建压缩文件夹 UWP
- javascript - 如何在这个 JavaScript 中更简单?
- java - 从 java 集合中删除重复项