本来想要写一个小日志的,也就是
然后调用
可是在GCC中(VS中是可以的),printf报错,于是只能这样调用
可是这样就很不爽啊,于是查了一下可以这样
##是连字符嘛,就是将宏中的两个参数连在一起我是知道的,可就是没想到啊 。。。
怎么说呢,看的代码太少。。。
完整代码
#include <iostream>
#include <cstdarg>
#if DEBUG
#define LOG(level, format, ...) \
printf("[%s][%s][%d][%s]\n", level, __FILE__, __LINE__, __func__);\
printf(format, __VA_ARGS__);\
printf("\n")
#else
#define LOG(level, format, ...) \
printf("[%s][%s][%d][%s]\n", level, __FILE__, __LINE__, __func__);\
printf(format, ##__VA_ARGS__);\
printf("\n")
#endif
int main()
{
#if DEBUG
// LOG("error", "LOG"); error
LOG("error", "%s", "LOG");
#else
LOG("error", "LOG");
#endif
std::cout << "end -----------------------" << std::endl;
return 0;
}