例如:
int main()
{
fun();//calling a fun
}
void fun(void)
{
#if 0
int a = 4;
int b = 5;
#endif
}
Run Code Online (Sandbox Code Playgroud)
功能的大小是fun()多少?什么是为main()功能创建的总内存?
C源文件的编译分多个阶段完成.预处理器运行的阶段在编译代码的阶段之前完成.
"编译器"甚至看不到预处理器已删除的代码; 从它的角度来看,功能很简单
void fun(void)
{
}
Run Code Online (Sandbox Code Playgroud)
现在,如果函数将"创建内存"取决于编译器及其优化.对于调试版本,该函数可能仍然存在并被调用.对于优化的发布版本,编译器可能不会调用甚至保留(生成函数的样板代码).