1、代码示例:
#include <iostream>
#include <ctime>
using namespace std;
// 打印当前的时间信息
void static print_curr_time()
{
time_t now = time(nullptr);
tm* curr_tm = localtime(&now);
static char time[80] = {0};
strftime(time, 80, "%Y-%m-%d %H:%M:%S ", curr_tm);
cout << time;
return;
}
// 打印当前的文件行数信息
void static print_locate_info(const char* name, uint32_t line)
{
cout << "[" << name << ".cpp] [" << line << "] ";
return;
}
// 打印日志具体内容
void static print_content()
{
cout << endl;
}
template <typename T, typename... Args>
void static print_content(T value, Args... args)
{
cout << value << " ";
print_content(args...);
}
// 日志宏总入口
#define LOG_RECORD(...) \
print_curr_time(); \
print_locate_info(__FUNCTION__, __LINE__); \
print_content(__VA_ARGS__)
int main()
{
LOG_RECORD("this is", 5, "exercise");
return 0;
}
参考资料:
1、函数可变参数(个数、类型)实现方法