我想写一个日志函数或宏,它可以接受其他回调函数作为参数,并在里面运行回调函数,记录运行时和名称。 但回调函数可能有不同的参数类型和数量,我不想明确地将回调函数名作为参数传递。实现一个登录函数或宏可以登录日期和函数名
我尝试使用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' ...将其删除。 –