个人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;
}
posted @ 2022-11-14 10:47  XDU18清欢  阅读(27)  评论(0)    收藏  举报