天天看點

上帝函數C

“上帝函數”是指實作了進階政策的函數。如果在程式中使用這種函數,會導緻連結器向可執行檔案中添加許多庫函數。在嵌入式系統中,可執行檔案的增大會耗盡實體記憶體;而在桌面級計算機上,可執行檔案的增大則會增加虛拟記憶體分頁。

在許多現有的庫中都存在着性能昂貴的上帝函數。優秀的庫在設計時會移除這些函數。但是如果将庫作為架構設計,則無法避免上帝函數。

#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;

}      

繼續閱讀