COMMENTS

为你的程序增加一个带文件名和行号的打印函数

linux下的程序大多数的DEBUG模式帮助很大,可以发现和解决很多问题。但如果想要修改这支程序,DEBUG如果再能输出这条信息来自于哪个文件的哪一行,对我们的帮助将是非常大的。程序运行一遍,根据debug信息很快就能大概了解程序的时序和流程了。
这支小程序实现了这个功能。源程序如下

log.h

1
2
3
4
5
6
7
#ifndef _LOG_H
#define _LOG_H
 
void sys_err(char *filename, int line, const char *fmt, ...);
#define log_err(fmt,args...)  sys_err(__FILE__,__LINE__,fmt,## args)
 
#endif

log.c

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <stdlib.h>
#include "log.h"
 
void sys_err(char *fn,int ln, const char *fmt, ...)
{
	printf("[%s %d]:%s",fn,ln,fmt);
}
 
int main()
{
	log_err("test the log_err function,printf log.c and the line No.n");
}

log_err函数就是这个输出错误信息的函数了,将这个函数放在自己的程序中,用gcc log.c -o log编译后,./log运行一遍看看,附带了调用log_err函数所在的文件名和行号。非常方便。

相关文章:
  1. 带有#和##符号的函数式宏展开步骤
  2. C hash table code
  3. strftime和strptime使用
  4. 使用setitimer和signal创建一个计时器
  5. 使用原始套接字SOCK_RAW捕捉网络数据包并简单分析

10 comments to 为你的程序增加一个带文件名和行号的打印函数

Leave a Reply

 

 

 

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)