#define指令内存存储

Joh*_*ing 1 c c++

当我宣布类似的东西时

#define VAR 1
Run Code Online (Sandbox Code Playgroud)

1值存储在哪里?我不认为在堆中,也不是堆栈..它可能在.bss部分吗?

Jos*_*eld 9

它不存储在任何地方.它仅在编译的预处理阶段使用.你可以把它看作只是一个文本替换VAR1整个代码.完成此操作后,程序中不再存在宏本身.

请考虑以下示例:

#define VAR 1
int x = VAR;
Run Code Online (Sandbox Code Playgroud)

这只是预处理成:

int x = 1;
Run Code Online (Sandbox Code Playgroud)

然后这个代码被编译为C++.因此,宏VAR根本没有占用任何空间.然而,定义的对象x可能很好.