主要是变参上的处理不一样,记录一下,备忘。
VS下:
#include "stdlib.h"
typedef enum hiHN_ERRLEVEL_E
{
HN_TRACE_DEBUG = 1, /* debug-level */
HN_TRACE_WARNING, /* warning information */
HN_TRACE_ERROR, /* error conditions */
HN_TRACE_INFO
} HN_ERRLEVEL_E;
#define HI_HN_DEBUG
#define HI_HN_TRACE_LEVEL HN_TRACE_DEBUG
#ifdef HI_HN_DEBUG
#define hi_hn_trace( level, fmt, ... ) \
do { \
if (level >= HI_HN_TRACE_LEVEL)\
{\
printf("L<%d>F:%s():L[%d]-> ", level, __FUNCTION__, __LINE__); \
printf(fmt, __VA_ARGS__); \
} \
} while (0)
#else
#define hi_hn_trace( level, fmt, ...)
#endif
#define HI_HN_ASSERT(expr) do { \
if (!(expr))\
{ \
printf( "ASSERT [%s] failed! %s:%s(line=%d)\n", # expr, __FILE__, __FUNCTION__, __LINE__); \
exit(0); \
} } while (0)
int _tmain(int argc, _TCHAR* argv[])
{
int a, b;
a = 10;
b = 20;
hi_hn_trace(HN_TRACE_DEBUG,"debug.\n");
hi_hn_trace(HN_TRACE_WARNING,"waring.\n");
hi_hn_trace(HN_TRACE_ERROR,"error.\n");
hi_hn_trace(HN_TRACE_INFO,"info.\n");
hi_hn_trace(HN_TRACE_INFO,"a = %d, b= %d.\n", a, b);
//HI_HN_ASSERT(a == b);
HI_HN_ASSERT(a != b);
b = 10;
hi_hn_trace(HN_TRACE_INFO,"a = %d, b= %d.\n", a, b);
HI_HN_ASSERT(a == b);
HI_HN_ASSERT(a != b);
getchar();
return 0;
}
linux下,
typedef enum hiMAPI_ERRLEVEL_E
{
MAPI_TRACE_DEBUG = 1, /* debug-level */
MAPI_TRACE_WARNING, /* warning information */
MAPI_TRACE_ERROR, /* error conditions */
MAPI_TRACE_INFO
} MAPI_ERRLEVEL_E;
#define HI_MAPI_DEBUG
#define HI_MAPI_TRACE_LEVEL MAPI_TRACE_ERROR
#ifdef HI_MAPI_DEBUG
#define hi_mapi_trace( level, fmt, args... ) \
do { \
if (level >= HI_MAPI_TRACE_LEVEL)\
{\
printf("%04d@%s(): ", __LINE__, __FUNCTION__); \
printf( fmt, ## args ); \
} \
} while (0)
#else
#define hi_mapi_trace( level, fmt, args... )
#endif
#define MAPI_ASSERT(expr) do { \
if (!(expr))\
{ \
printf( "Assertion [%s] failed! %s:%s(line=%d)\n", # expr, __FILE__, __FUNCTION__, __LINE__); \
_exit(0); \
} } while (0)