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