typedef
int (*brewfunction)();//函式指標型別變數
typedef
std::map
brewmap;
brewmap g_brew_map;//全域性變數
#define registerbrewfunction(func) \
namespace \
}; \
__registerer_##func g_registerer_##func; \
}
匿名命名空間,使得檔案外無法訪問這些變數,定義乙個類,以陣列方式往map中新增乙個函式指標。『#』表示將乙個變數變成字串。『##』表示拼接乙個字串和乙個變數。
//返回函式指標
static brewfunction getbrewfunction(const
string& name) else
std:cerr
<< "unknown action: "
<< name;
return null; // not reachable, just to suppress old compiler warnings.
}}int name1()
registerbrewfunction(name1);
int name2()
registerbrewfunction(name2);
使用的方法:
int main(int argc, char** argv)
示例:
./main name1
./main name2
程式的整個思路是:
開始程式,執行巨集展開,巨集展開的過程會定義兩個類別和兩個全域性物件,其名稱含有name1和name2欄位。類定義物件的時候會呼叫類的建構函式,在建構函式裡將函式指標加入map中。
根據終端輸入的函式名字,由名字查詢map得到函式指標,然後呼叫函式。
opencv 一種聚焦評價函式
聚焦評價函式,對於自動聚焦的實現,具有重要的意義。聚焦評價函式有很多,每種方法都有其優點和缺點,本文所記錄的,只是其中一種方法,個人覺得是簡單實用的。原理很簡單,越是清晰的 每個畫素與其周圍畫素的差距越大,當聚焦不對時,會發現,整個影象糊成一團,即畫素值都在某一小範圍內。int calculateg...
動態css的一種思路 非原創
在web系統開發過程中,採用css 增強和美化頁面樣式已經成了一道標準 工序 在visual studio net 環境下開發bs系統,可以通過設定web 控制項的cssclass屬性,方便地設定和修改控制項的樣式。但在實際開發過程中,讓開發人員乙個個地設定控制項的cssclass屬性,不僅繁瑣,而...
NGUI的UISprite動態染色的一種方法
本文主要參考iwinterice 的 ngui的uisprite動態染色的一種解決方案 文章。參考參考,就是既參詳又拷貝,相關理論依據,還請去移步 ngui的uisprite動態染色的一種解決方案 裡面去尋找。我這裡只有提供一下原始碼,並對原博文進行了一點點修改,至於修改後的好壞,俺也不知道咯。首先...