gpt4 book ai didi

c - 编译器会为C语言中宏禁用的代码分配任何内存吗?

转载 作者:行者123 更新时间:2023-12-02 06:13:25 25 4
gpt4 key购买 nike

例如:

int main()
{
fun();//calling a fun
}

void fun(void)
{
#if 0
int a = 4;
int b = 5;
#endif
}

fun() 函数的大小是多少?将为 main() 函数创建的总内存是多少?

最佳答案

C 源文件编译完成in multiple phases .预处理器运行的阶段在代码编译阶段之前完成。

“编译器”甚至看不到预处理器删除的代码;从它的角度来看,这个功能很简单

void fun(void)
{
}

现在函数是否会“创建内存”取决于编译器及其优化。对于调试版本,该函数可能仍然存在并被调用。对于优化的发布构建,编译器可能不会调用甚至保留(为其生成样板代码)函数。

关于c - 编译器会为C语言中宏禁用的代码分配任何内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51999038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com