为了方便调试C程序,写了个打印信息的宏,能够打印错误信息,以及错误发生的文件名、行号。
-
#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
测试程序:
-
#include "debug.h"
-
-
int
-
main()
-
{
-
printf("test\n");
-
-
FILE *fp = NULL;
-
-
fp = fopen("./none.txt", "r");
-
if (fp == NULL)
-
{
-
ERR_PRINT("fopen error");
-
}
-
-
int i = 1;
-
-
if (i < 2)
-
{
-
INFO_PRINT("i < 2");
-
}
-
-
return 0;
-
}
-
[winway@s211 err_print]$ gcc test.c
-
[winway@s211 err_print]$ ./a.out
-
test
-
[winway@s211 err_print]$ gcc test.c -DDEBUG_ON
-
[winway@s211 err_print]$ ./a.out
-
test
-
[file: test.c line: 13] fopen error: No such file or directory
-
[file: test.c line: 20] i < 2
欢迎使用。
阅读(4594) | 评论(0) | 转发(6) |