前幾天為新員工寫一個簡單的測試框架,可讓他們方便的寫測試用例并且執行。期間遇到一個問題就是如何讓他們增加測試用例而用不影響測試框架的代碼?c++的單件模式可以解決這個問題,但是其中一個難點是要在main之前注冊單件。c++可以通過構造函數來實現注冊,c如何注冊? 最后查了下資料,原來可以定義在main之前調用的函數!有了這個特性可以改善c的模塊化設計。 特性介紹: 如果想定義在main函數之前調用的函數,可以在函數的聲明之后加上一句“__attribute__((constructor))”,如下: int before()__attribute__((constructor)); 如果想定義在main函數之后調用的函數,可以在函數的聲明之后加上一句“__attribute__((destructor))”,如下: int after()__attribute__((destructor)); 可以看得出來,應該類似于c++中的構造和析構。