linux C宏定义实现打印调试信息

本文仅实现了三种宏定义调试

    #define LOG(s)                                   日志显示(文件名:行号}+日志信息

    #define ERROR(s)                            错误信息位置(级别+文件名+函数名+行号+错误信息)

   #define PrintArray2D(arr,m,n)         二维float数组按行列打印显示 

代码如下:

#include <stdio.h>
/**
 * 简单打印调试信息
 */
#define DEBUG        1
#ifdef DEBUG
    //日志显示(文件名:行号}+日期
    #define LOG(s) printf("[%s:%d] %s\n", __FILE__, __LINE__, s)
	//错误信息位置(级别+文件名+函数名+行号+错误信息)
    #define ERROR(s)                                                                      \
	do{																					  \
	fprintf(stderr, "[ERROR  at:]%s %s(Line %d): %s\n",__FILE__,__FUNCTION__,__LINE__,s); \
	}while(0)  
    //二维float数组打印显示 
	#define PrintArray2D(arr,m,n)       \
	do                                  \
	{                                   \
		int  i = 0;                     \
		int  j = 0;                     \
		for(i=0;i<m;i++)                \
		{                               \
		  for(j=0;j<n;j++)              \
		  {                             \
		   printf("%f  ",arr[i][j]);    \
		  }                             \
		   printf("\n");                \
		}                               \
	}while(0)

#else
    //日志不显示
    #define LOG(s)  NULL 
    //二维float数组打印不显示 
    #define PrintArray2D(arr,m,n)       NULL
    //错误信息不显示
    #define ERROR(s)          NULL                     
#endif

对此三种加上了条件编译判断,只有当DEBUG定义后,才显示具体错误信息,调试数组显示信息,否则一律为NULL,即不显示

当调试时,在该头文件上方加入:#define DEBUG        1 语句即可

当不调试改为发行版本时,注释该语句


当然,还应该有一个时间显示的宏,但由于需要加入头文件<time.h>,所以本次测试未测试该宏语句


读者可能在采用本代码时出现宏定义错误情况,出现错误原因可能是 接续符“\"没有严格为反斜杠 

或者是位置错误引起的,此时在VC或者DEV环境下稍加调试即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值