#pragma once 
#define 函类名() 取左串其右(宏函名,"::")
//0,代表不用//1,代表大枝
//2,代表中枝//3,代表小枝
构 允许调试{//级,与要调试类.
无序映<串,整>列;串 gm;整 j=2;//自由函数的级别
//只针对类中函数.普通函数
//应该是注册机制.一个中心.
元<整 级,型名...M>
空 注册(){(压(列,简写名<M>(),级),...);}
//将类名改成中文.类名底层为utf8编码.
//空 置类名(串&a){m=a;}//不用了.
空 置级(整 a){j=a;}
//级别,越大,越详细,置级,置的是自由函数的级别.
元<整 I,型名...T>常式 空 动作(T...o){
动 t=列.查找(gm);如(t==列.尾())中;
如((t->第二)>=I){打印(o...);}
}//加个只调试某些类呢?,也可以加个调试级数.
};//调试,必须给出级别.还要有个转发函数.
允许调试 t;

#define 调试(a,...) \
t.gm=函类名();t.动作<a>(__VA_ARGS__);
//函类名,必须用宏.

元<型名...T>空 调函(整 a,T&...o){//自由函数.
如(a>=t.级)打印(o...);
}//这样搞,就可以不同片段区,控制不同级别,

/*用法如下:
t.注册<1,A类,...>();//1,设置级别(0~3).
前面数字越大,显示信息越多.
再在需要的地方加上
调试(2,"信息");//2为一般,3为细节.
*/