如何将内存分配给c中的宏?

我想知道如何将内存分配给C中的#define变量。

#define VAR1 10 

我有两个问题……

  1. VAR1的类型是什么?
  2. 存储段VAR1存储在哪?

VAR1既没有类型也没有任何运行时表示。 它只能被预处理器识别。

所以答案是穆 :你的问题无法回答,因为它是基于错误的假设。

存储段VAR1存储在哪?

在所有细分中都没有。

VAR1仅在预处理阶段相关,并且在运行时没有任何标识。 在预处理期间, VAR1所有实例都替换为10因此在运行时没有内存要求,因为10是整数文字。

VAR1的类型是什么?

VAR1在预处理阶段被替换为1010integer literal ,我们可以说类型或VAR1int


道德:不是变量。

根据我的理解,通过宏的定义既没有类型也没有显式分配内存; 在编译之前,定义的右侧(在这种情况下为10在文本上扩展到左侧(在这种情况下为VAR1 )的任何出现。

Macros not variables 。 它们只是某些价值的通用名称。 在您的情况下, VAR1对应于integer数值10

宏未存储在内存中的任何位置。 当我们用C或C ++编译程序时,它在很多阶段完成。 首先,检查语法。 如果语法正确,则检查语义错误。 如果它通过,则.c程序文件将转换为Object code 。 在此转换过程中,处理预处理器,即包含头文件,包含任何外部链接文件,并将all the macro are replaced with their corresponding values (在您的情况下,在程序找到VAR1任何位置,它将用值替换它10 )。

在此阶段之后,所有代码都已转换为接近机器级代码。

我希望你得到你的答案。