C编写的调试宏

<<debug.h>>

#ifndef _DEBUG_H_
#define _DEBUG_H_

#include <stdio.h>
#include <string.h>
#include <malloc.h>

#define ERRBUFLEN 1024

#ifdef DEBUG_ON

#define ERR_PRINT(str) \
  do \
  { \
  char errbuf[ERRBUFLEN] = { '\0' }; \
  snprintf(errbuf, ERRBUFLEN, "[file %s line: %d] %s", __FILE__, __LINE__, str); \
  fprintf(stderr, "\033[31m"); \
  perror(errbuf); \
  fprintf(stderr, "\033[0m"); \
  } while( 0 )
#define INFO_PRINT(str) \
  do \
  { \
  printf("\033[31m"); \
  printf("[file: %s line: %d] %s\n", __FILE__, __LINE__, str); \
  printf("\033[0m"); \
  } while ( 0 )
#else
#define ERR_PRINT(str)
#define INFO_PRINT(str)
#endif

#endif

<<debug.c>>

#include "debug.h"

int main()
{
  printf("test\n");
  FILE *fp = NULL;

  fp = fopen("./none.txt", "r");
  if (NULL == fp){
    ERR_PRINT("fopen error");
  }

  int i = 1;
  if (i < 2){
    INFO_PRINT("i < 2");
  }

  return 0;
}

运行结果:

 

 

gcc的-D和-U参数:宏的设置与取消

posted @ 2013-07-19 16:46  waldmer  阅读(356)  评论(0编辑  收藏  举报