//
testLog.cpp : 定义控制台应用程序的入口点。
//
//
下面这些宏 可以求出
"..."
参数的个数
//
输出不同个数参数的宏
//
根据参数个数,拼接出调用的宏 Log1(...), Log2(...), ...
///
////////////////////////////////////////////////////////////////////////////////
///
重载的输出单个参数:可以根据类型确定输出格式
void _PrintOneParam(char value)
{
_MyPrintf(
"'%c'"
, value);
}
void _PrintOneParam(const char * szLog)
{
_MyPrintf(
"\"%s\""
, szLog);
}
void _PrintOneParam(int value)
{
_MyPrintf(
"%d"
, value);
}
void _PrintOneParam(float value)
{
_MyPrintf(
"%f"
, value);
}
void _PrintOneParam(double value)
{
_MyPrintf(
"%lf"
, value);
}
///
...
///
////////////////////////////////////////////////////////////////////////////////
///
////////////////////////////////////////////////////////////////////////////////
///
输出名字和值
template<typename T1>
void _LogA_Helper(const char * szT1Name, T1& t1)
{
_MyPrintf(
"["
); _MyPrintf(
"%s="
, szT1Name); _PrintOneParam(t1); _MyPrintf(
"]"
);
_MyPrintf(
"\r\n"
);
}
template<typename T1,typename T2>
void _LogA_Helper(const char * szT1Name, T1& t1, const char * szT2Name, T2& t2)
{
_MyPrintf(
"["
); _MyPrintf(
"%s="
, szT1Name); _PrintOneParam(t1); _MyPrintf(
"]"
);
_MyPrintf(
"["
); _MyPrintf(
"%s="
, szT2Name); _PrintOneParam(t2); _MyPrintf(
"]"
);
_MyPrintf(
"\r\n"
);
}
template<typename T1,typename T2, typename T3>
void _LogA_Helper(const char * szT1Name, T1& t1, const char * szT2Name, T2& t2, const char * szT3Name, T3& t3)
{
_MyPrintf(
"["
); _MyPrintf(
"%s="
, szT1Name); _PrintOneParam(t1); _MyPrintf(
"]"
);
_MyPrintf(
"["
); _MyPrintf(
"%s="
, szT2Name); _PrintOneParam(t2); _MyPrintf(
"]"
);
_MyPrintf(
"["
); _MyPrintf(
"%s="
, szT3Name); _PrintOneParam(t3); _MyPrintf(
"]"
);
_MyPrintf(
"\r\n"
);
}
template<typename T1,typename T2, typename T3, typename T4>
void _LogA_Helper(const char * szT1Name, T1& t1, const char * szT2Name, T2& t2, const char * szT3Name, T3& t3, const char *szT4Name, T4& t4)
{
_MyPrintf(
"["
); _MyPrintf(
"%s="
, szT1Name); _PrintOneParam(t1); _MyPrintf(
"]"
);
_MyPrintf(
"["
); _MyPrintf(
"%s="
, szT2Name); _PrintOneParam(t2); _MyPrintf(
"]"
);
_MyPrintf(
"["
); _MyPrintf(
"%s="
, szT3Name); _PrintOneParam(t3); _MyPrintf(
"]"
);
_MyPrintf(
"["
); _MyPrintf(
"%s="
, szT4Name); _PrintOneParam(t4); _MyPrintf(
"]"
);
_MyPrintf(
"\r\n"
);
}
///
...
///
////////////////////////////////////////////////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
int a = 1;
int b = 2;
double c = 1.2;
Logs(a,b,c);
return
0;
}