“上帝函数”是指实现了高级策略的函数。如果在程序中使用这种函数,会导致链接器向可执行文件中添加许多库函数。在嵌入式系统中,可执行文件的增大会耗尽物理内存;而在桌面级计算机上,可执行文件的增大则会增加虚拟内存分页。
在许多现有的库中都存在着性能昂贵的上帝函数。优秀的库在设计时会移除这些函数。但是如果将库作为框架设计,则无法避免上帝函数。
#include <stdio.h>
int main(int, char **){
printf(“hello world !\n”)
return 0;
}
这段程序包含了多少个可执行字节呢?如果你觉得“大约50到100字节”,那么你就错了这是两个数量级的差距。在我编写的一个嵌入式控制其中,这段程序占用了8KB。而且这仅仅是代码的大小,不包含符号表,加载器信息和其他任何代码。
#include <stdio.h>
int main(int, char**){
puts(“hello world\n”);
return 0;
}