个人c++微型debugger
目录
基本的模板操作
#pragma once
#include "bits\stdc++.h"
using namespace std;
string GetTime(){
using namespace std;
time_t now = time(0);
tm *ltm = localtime(&now);
long long int tmp = 0;
tmp += 1900 + ltm->tm_year;
tmp *= 100;
tmp += 1 + ltm->tm_mon;
tmp *= 100;
tmp += ltm->tm_mday;
tmp *= 100;
tmp += ltm->tm_hour;
tmp *= 100;
tmp += ltm->tm_min;
tmp *= 100;
tmp += ltm->tm_sec;
string ret = to_string(tmp);
ret.insert(12,":");
ret.insert(10,":");
ret.insert(8,"-");
ret.insert(6,".");
ret.insert(4,".");
return ret;
}
template<typename T>
ostream& operator << (ostream& os,vector<T> const& rhs) {
os << "(";
if (rhs.size()) {
os << rhs.front();
for (int i = 1;i < rhs.size();++i) {
os << "," << rhs[i];
}
}
os << ")";
return os;
}
template<typename T1,typename T2>
ostream& operator << (ostream& os,pair<T1,T2> const& rhs) {
return os << "(" << rhs.first << "," << rhs.second << ")";
}
template <size_t size>
void __print(int line,const char * const name,char const (&arr)[size]) {
std::string str;
auto len = strlen(name);
for (int i = 1; i + 1 < len; ++i) {
str += name[i];
}
cout << "in line " << setw(4) << right << line << " : " << str << "\n";
}
template <typename T>
void __print(int line,const char * const name,T const& rhs) {
cout << "in line " << setw(4) << right << line << " : " << name << " = " << rhs << "\n";
}
#define __debug(val) __print(__LINE__,#val,val)
#define __debug_1(a) do {cout << "\n" << GetTime() << " " << __FILE__ << ":" << __func__ << "\n";__debug(a);cout << "\n";} while(0)
#define __debug_2(a,b) do {cout << "\n" << GetTime() << " " << __FILE__ << ":" << __func__ << "\n";__debug(a);__debug(b);cout << "\n";} while(0)
#define __debug_3(a,b,c) do {cout << "\n" << GetTime() << " " << __FILE__ << ":" << __func__ << "\n";__debug(a);__debug(b);__debug(c);cout << "\n";} while(0)
#define __debug_4(a,b,c,d) do {cout << "\n" << GetTime() << " " << __FILE__ << ":" << __func__ << "\n";__debug(a);__debug(b);__debug(c);__debug(d);cout << "\n";} while(0)
#define __debug_5(a,b,c,d,e) do {cout << "\n" << GetTime() << " " << __FILE__ << ":" << __func__ << "\n";__debug(a);__debug(b);__debug(c);__debug(d);__debug(e);cout << "\n";} while(0)
#define __debug_6(a,b,c,d,e,f) do {cout << "\n" << GetTime() << " " << __FILE__ << ":" << __func__ << "\n";__debug(a);__debug(b);__debug(c);__debug(d);__debug(e);__debug(f);cout << "\n";} while(0)
#define __debug_7(a,b,c,d,e,f,g) do {cout << "\n" << GetTime() << " " << __FILE__ << ":" << __func__ << "\n";__debug(a);__debug(b);__debug(c);__debug(d);__debug(e);__debug(f);__debug(g);cout << "\n";} while(0)
#define __debug_8(a,b,c,d,e,f,g,h) do {cout << "\n" << GetTime() << " " << __FILE__ << ":" << __func__ << "\n";__debug(a);__debug(b);__debug(c);__debug(d);__debug(e);__debug(f);__debug(g);__debug(h);cout << "\n";} while(0)
#define __debug_9(a,b,c,d,e,f,g,h,i) do {cout << "\n" << GetTime() << " " << __FILE__ << ":" << __func__ << "\n";__debug(a);__debug(b);__debug(c);__debug(d);__debug(e);__debug(f);__debug(g);__debug(h);__debug(i);cout << "\n";} while(0)
#define __debug_10(a,b,c,d,e,f,g,h,i,j) do {cout << "\n" << GetTime() << " " << __FILE__ << ":" << __func__ << "\n";__debug(a);__debug(b);__debug(c);__debug(d);__debug(e);__debug(f);__debug(g);__debug(h);__debug(i);__debug(j);cout << "\n";} while(0)
#define VARGS_(_10,_9,_8,_7,_6,_5,_4,_3,_2,_1,N,...) N
#define VARGS(...) VARGS_(__VA_ARGS__,10,9,8,7,6,5,4,3,2,1,0)
#define CONCAT_(a,b) a##b
#define CONCAT(a,b) CONCAT_(a,b)
#define warning(...) CONCAT(__debug_,VARGS(__VA_ARGS__))(__VA_ARGS__)
#define debug(...)
int main() {
warning("+++++++++++++++++++++++++++++++++++++++++++++++++++++++",
123,
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
int a = 10;
double b = 30.123;
warning("",a,b);
return 0;
}
本文来自博客园,作者:XDU18清欢,转载请注明原文链接:https://www.cnblogs.com/XDU-mzb/p/16888308.html
浙公网安备 33010602011771号