首页 > 解决方案 > 诸如全局整数之类的宏在内存中存储在哪里?

问题描述

我试图了解事物在内存中的存储位置,例如全局变量和静态变量(.data,如果未初始化为零)等。

我试图找到/考虑的是一个宏,如下所示:

#define thisInteger 100

这可以使用 objdump 找到吗?

此外,如果我将其分配给一个新变量,如下所示,它将在哪里找到(在 .data 中猜测):

#define THIS_INTEGER 100

int newVariable = THIS_INTEGER;

标签: cassemblysystemobjdump

解决方案


宏不是变量,因此它们不会存储在任何地方。当您这样做时#define thisInteger 100,C 预处理器会运行源代码并替换thisInteger为整数文字100。询问thisInteger存储在哪里与询问存储在哪里相同100。要验证这一点,请尝试类似&thisInteger. 它不会编译,因为它&100是非法的并且没有意义。

这可以使用 objdump 找到吗?

不。预处理是在编译之前完成的复制粘贴处理。

此外,如果我将其分配给一个新变量,如下所示,在哪里可以找到

取决于您定义变量的位置。


推荐阅读