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

来源:互联网 发布:网络违法行为查处 编辑:程序博客网 时间:2024/06/06 20:34

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

    #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 0
原创粉丝点击