printf 打印 文件名 函数名 行号
来源:互联网 发布:淘宝联盟怎么生成链接 编辑:程序博客网 时间:2024/04/25 22:40
输出源文件的标题,目前执行行的行数,编译的日期,编译的时间。
Linux下实现
#include <stdio.h>
int main()
{
printf("当前代码行:%d\n", __LINE__);
printf("当前源代码文件名:%s\n", __FILE__);
printf("当前文件编译的日期%s\n", __DATE__);
printf("当前文件编译的时间%s\n", __TIME__);
return 0;
}
Windows下实现
#include <stdio.h>
int main()
{
printf("当前代码的行数:%d\n", __LINE__);
printf("当前源文件的文件名:%s\n", __FILE__);
printf("当前源文件的编译日期:%s\n", __DATE__);
printf("当前源文件的编译时间:%s\n", __TIME__);
printf("当前源文件的编译的具体时间:%s\n", __TIMESTAMP__);
return 0;
}
上面用Linux和Windows两种环境进行了测试,他们的函数还是有区别的,例如Wingdows下有 __TIMESTAMP__这个变量,而Linux下没有。还有__FILE__这个变量在Linux下的运行结果直接是文件名,而Windows下这个变量的结果为其具体的路径。
以上的这两个例子我觉得主要运用在对源文件的调试中,如果用户的程序在执行过程中出错,可以将这些出错信息通过E-mail发送给程序员,程序员能够迅速的定位代码的出错位置。
使用宏
__FILE__ 文件名
__LINE__ 行号
__FUNCTION__ 函数名
即可。
#define debug_msg(fmt,...) printf("%s[%d]:"fmt,__FILE__,__LINE__,##__VA_ARGS__)
#define printf_my(fmt, ...) printf("%s %s %s %s %d:"fmt, __FILE__, __FUNCTION__, __DATE__, __TIME__, __LINE__, ##__VA_ARGS__)
int printf_my(const char *fmt, ...)
{
#ifdef DEBUG
printf("%s %s %s %s %d:"fmt, __FILE__, __FUNCTION__, __DATE__, __TIME__, __LINE__, ##__VA_ARGS__)
#endif
}
#include "stdarg.h"
int my_printf (const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
done = vprintf (format, arg);
va_end (arg);
return done;
}
//引用头文件
debug.h
#ifndef __DEBUG__H_
#define __DEBUG__H_
#include <stdio.h>
#define DEBUG
#ifdef DEBUG
#define printf_debug(fmt, ...) printf("%s %s %s %s %d:"fmt, __FILE__,
__FUNCTION__, __DATE__, __TIME__, __LINE__, ##__VA_ARGS__)
#else
#define printf_debug(fmt, ...)
#endif
#endif
- printf 打印 文件名 函数名 行号
- C语言 打印文件名,行号,函数名
- Java打印文件名、函数名、行号
- Android 打印文件名、函数名、行号
- Java打印文件名、函数名、行号
- 封装printf函数,让log可以打印文件名和行号
- ios-调试程序打印详细信息 文件名 函数名 行号
- C/C++ 打印文件名、行号、函数名的方法
- ios-调试程序打印详细信息 文件名 函数名 行号
- 内核调试常会打印 文件名 函数名 行号
- C++中打印所处的文件名,行号,函数名
- C++打印当前文件名,行号,当前函数名
- ios-调试程序打印详细信息 文件名 函数名 行号
- C/C++ 打印文件名、行号、函数名的方法 .
- C/C++ 打印文件名、行号、函数名的方法
- C/C++语言中如何使用宏打印行号、文件名和函数名
- 显示当前行号、文件名和函数名
- python 获取当前行号 函数名 文件名
- inspur 浪潮 与SAP战略合作产生的影响
- 通用Makefile模板
- 本地 json文件转化成plist文件
- iOS多线程概述
- 子目录 makefile make和clean
- printf 打印 文件名 函数名 行号
- mongodb查询子集
- 我的python的学习之旅
- 使用iconv命令轻松实现linux下字符集编码的转换-转
- linux 编码转换-转
- 安装方式
- arm-linux-gcc: No such file or directory
- 错误提示:No enclosing instance of type A is accessible. Must qualify the allocation with an enclosing
- 将Access数据库导入到SQLite最简单最实用的方法 -转