诸如全局整数之类的宏在内存中存储在哪里?

let*_*cal 1 c assembly system objdump

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

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

#define thisInteger 100
Run Code Online (Sandbox Code Playgroud)

这可以使用 objdump 找到吗?

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

#define THIS_INTEGER 100

int newVariable = THIS_INTEGER;
Run Code Online (Sandbox Code Playgroud)

Ayx*_*xan 5

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

这可以使用 objdump 找到吗?

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

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

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