我想寫一個日誌函數或宏,它可以接受其他回調函數作爲參數,並在裏面運行回調函數,記錄運行時和名稱。 但回調函數可能有不同的參數類型和數量,我不想明確地將回調函數名作爲參數傳遞。實現一個登錄函數或宏可以登錄日期和函數名
我嘗試使用std ::綁定和std ::功能
void log(std::function<void()> callbackFunc){ //assuming all callbackFunc return type is void struct timeval tmBegin, tmEnd; gettimeofday(&tmBegin); callbackFunc(); gettimeofday(&tmEnd); //then write tmEnd - tmBegin to file //but i dont know how to get callbackFunc's name} void callbackFunc1(int); void callbackFunc2(int ,char, string); log(std::bind(callbackFunc1, 1)); log(std::bind(callbackFunc2, 2, 'c', "test"));
除此之外,也許回調函數具有不同的返回類型,可以實現這樣的日誌功能?
你有沒有看着可變參數模板(因爲C++ 11),例如在http://eli.thegreenplace.net/ 2014/variadic-templates-in-c/ – jensa
這不是'C' ...將其刪除。 –