宏存储在哪里?

Rec*_*ker 5 c macros c-preprocessor

如果我在我的C代码中使用宏,例如

#define var 10
Run Code Online (Sandbox Code Playgroud)

然后存储在由内核分配给进程的空间中的确切位置?在堆或BSS或全局数据?或者它只是一个编译器传递中var的文本替换?

Evi*_*ach 14

是.
最后一个

只是文字替换

它由预处理过程执行.这里可以找到一些好的细节


Jon*_*len 5

像这样的预处理器指令#define在编译的预处理阶段会被替换为相应的文本,并且(几乎)永远不会在最终的可执行文件中表示。