printf 打印 文件名 函数名 行号
输出源文件的标题,目前执行行的行数,编译的日期,编译的时间。
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 打印 文件名 函数名 行号相关推荐
- Android获取Java类名/文件名/方法名/行号
//ep.getStackTrace()[0].getClassName():0为当前方法类名;1为调用者类名. Exception ep = new Exception(); Log.d(TAG,& ...
- Go 学习笔记(54)— Go 第三方库之 uber-go/zap/lumberjack(记录日志到文件、支持自动分割日志、支持日志级别、打印调用文件、函数和行号)
1. 简要说明 zap 是 uber 开源的 Go 高性能日志库,支持不同的日志级别, 能够打印基本信息等,但不支持日志的分割,这里我们可以使用 lumberjack 也是 zap 官方推荐用于日志分 ...
- c 打印 callback 函数名_Go 中的函数
1. 函数参数和返回值的写法 如果有多个参数是同一个类型,可以简略写: func testReturnFunc(v1,v2 int)(int,int) {x1 := 2 * v1x2 := 3 * v ...
- Android开发之带行号显示的Log工具类
import android.util.Log;/*** 日志控制*/ public class LogUtils {private final static String TAG = "L ...
- linux 脚本加上行号,关于linux:如何在执行bash脚本时显示行号
我有一个测试脚本,它有很多命令,会产生很多输出,我使用set -x或set -v和set -e,所以当出现错误时脚本会停止.但是,我仍然很难找到执行停止的行以定位问题.是否有一种方法可以在执行每一行之 ...
- python输出关键字的行号_python – 使用关键字行号创建字典
我试图通读一个txt.file并打印关键字出现的行号.这是我到目前为止所拥有的: def index(filename, word_lst): dic = {} line_count = 0 for ...
- 用trie树实现输入提示功能,输入php函数名,提示php函数
参照刘汝佳的trie树 结构体 #include "stdio.h"#include"stdlib.h"#include"string.h" ...
- jquery获取动态表格行号_jquery datatables双击,获取行号。
function dbClickDatatables(rows) { $("#@(Perfix)tbData tbody tr").dblclick(function(e){ de ...
- oracle 检索行号,sql使用row_number()查询标记行号
背景: 在分页功能中,记录需分页显示,需要row_number()函数标记行号. 数据表: 排序之前数据表显示: sql语句: 1 select ROW_NUMBER() over(order by ...
最新文章
- 【python编程导论】我想和你探讨下如何去写好程序
- Elide 4.3.1 发布,雅虎开源的应用数据 API 搭建平台
- oracle的日志分析工具,oracle日志分析工具LogMiner使用(实战)
- HttpWatch截取网页数据的工具以及介绍
- scala spark 埋点统计_spark—1:WordCount(Python与Scala对照)
- 关于c语言中合法的数值常量
- mysql 约束 和索引_Mysql中索引和约束的示例语句
- 特洛伊木马程序_特洛伊木马Dridex的新变种可避免反病毒软件的检测
- restframework序列化解析详解(番外)
- 企业微信重磅更新!离职继承无需客户同意、群自动踢人、群成员去重...
- 解决安装 Bun 之后出现 zsh compinit: insecure directories, run compaudit for list. Ignore insecure directorie
- Unity的五个窗口面板
- 财务考PMP有用吗?
- MacBook Pro win7系统下使用 苹果鼠标 apple mouse
- HTML5相册,网页,模板,微信,制作,
- dump文件深度分析
- 赞美CSDN 我去年买了个登山包超耐磨。
- Oracle-08:连接查询
- Linux云计算【第一阶段】第四章:权限管理
- JAVA算法:回文字符串相关问题详解(回文字符串总结)