VS和linux中变参宏,打印

 主要是变参上的处理不一样,记录一下,备忘。

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值