当我宣布类似的东西时
#define VAR 1
Run Code Online (Sandbox Code Playgroud)
1值存储在哪里?我不认为在堆中,也不是堆栈..它可能在.bss部分吗?
它不存储在任何地方.它仅在编译的预处理阶段使用.你可以把它看作只是一个文本替换VAR与1整个代码.完成此操作后,程序中不再存在宏本身.
请考虑以下示例:
#define VAR 1
int x = VAR;
Run Code Online (Sandbox Code Playgroud)
这只是预处理成:
int x = 1;
Run Code Online (Sandbox Code Playgroud)
然后这个代码被编译为C++.因此,宏VAR根本没有占用任何空间.然而,定义的对象x可能很好.