#define 函类名() 取左串其右(宏函名,"::")
//用宏展开,宏只有靠宏.宏函名包括类名.这就是关键点.
//元<整 I,型名...T>空 调试(T&...o){//重要函数为0,1级
//    常 整 级=2;//普通函数调试级,重要,修改点
//    如 常式(级>=I){打印(o...);}//常式,编译期
//}//加个只调试某些类呢?,也可以加个调试级数.
//不用这个,会冲突
//0,代表大纲//1,代表大枝
//2,代表中枝//3,代表小枝
元<整 级,型名...M>构 允许调试{//级,与要调试类.
    无序集<串>名;串 m;//只针对类中函数.普通函数
    允许调试(){(压(名,简写名<M>()),...);}
    //将类名改成中文.类名底层为utf8编码.
    空 置类名(串&a){m=a;}
    元<整 I,型名...T>常式 空 动作(T...o){
        如(!在集(m,名)){中;}
        如 常式(级>=I){打印(o...);}
    }//加个只调试某些类呢?,也可以加个调试级数.
};//调试,必须给出级别.还要有个转发函数.
//下面内容分发至每个要调试项目中.
串 gm;//怪名,如果不是全局名,则会重复定义,可以引起
//编译死机.
#define 调试(a,...) \
    gm=函类名();t.置类名(gm);\
    t.动作<a>(__VA_ARGS__);
//下面内容根据文件不同而改
构 中文;构 中国;
允许调试<2,中文,中国>t;//重要,修改点,可调节级别与类...
//允许调试<2,中文,中国>t;
//这里相当于是注册<类名>,先注册,再查找.
//调整这两个地方.
//#define 调呀实现(...) 打印(可变参数)
//#define 微软扩展(...) 可变参数
//#define 调呀(...) 打印(__VA_ARGS__)
//元<整 I,型名...T>内联 动 调试2(T...o){
//    gm=函类名();打印(gm);t.置类名(gm);
//    t.动作(o...);打印(o...);
//}//没用,必须用宏.
//然后经常修改这个2啊,1啊,还有类啊//来控制程序
//1个是控制级别,1-3,级数越大细节越多,
//使用时,就`t.调试<1>(...)`
//控制类别当前希望显示哪些类的信息.
//用宏来调用这个`调试`.