输出源文件的标题,目前执行行的行数,编译的日期,编译的时间。

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 打印 文件名 函数名 行号相关推荐

  1. Android获取Java类名/文件名/方法名/行号

    //ep.getStackTrace()[0].getClassName():0为当前方法类名;1为调用者类名. Exception ep = new Exception(); Log.d(TAG,& ...

  2. Go 学习笔记(54)— Go 第三方库之 uber-go/zap/lumberjack(记录日志到文件、支持自动分割日志、支持日志级别、打印调用文件、函数和行号)

    1. 简要说明 zap 是 uber 开源的 Go 高性能日志库,支持不同的日志级别, 能够打印基本信息等,但不支持日志的分割,这里我们可以使用 lumberjack 也是 zap 官方推荐用于日志分 ...

  3. c 打印 callback 函数名_Go 中的函数

    1. 函数参数和返回值的写法 如果有多个参数是同一个类型,可以简略写: func testReturnFunc(v1,v2 int)(int,int) {x1 := 2 * v1x2 := 3 * v ...

  4. Android开发之带行号显示的Log工具类

    import android.util.Log;/*** 日志控制*/ public class LogUtils {private final static String TAG = "L ...

  5. linux 脚本加上行号,关于linux:如何在执行bash脚本时显示行号

    我有一个测试脚本,它有很多命令,会产生很多输出,我使用set -x或set -v和set -e,所以当出现错误时脚本会停止.但是,我仍然很难找到执行停止的行以定位问题.是否有一种方法可以在执行每一行之 ...

  6. python输出关键字的行号_python – 使用关键字行号创建字典

    我试图通读一个txt.file并打印关键字出现的行号.这是我到目前为止所拥有的: def index(filename, word_lst): dic = {} line_count = 0 for ...

  7. 用trie树实现输入提示功能,输入php函数名,提示php函数

    参照刘汝佳的trie树 结构体 #include "stdio.h"#include"stdlib.h"#include"string.h" ...

  8. jquery获取动态表格行号_jquery datatables双击,获取行号。

    function dbClickDatatables(rows) { $("#@(Perfix)tbData tbody tr").dblclick(function(e){ de ...

  9. oracle 检索行号,sql使用row_number()查询标记行号

    背景: 在分页功能中,记录需分页显示,需要row_number()函数标记行号. 数据表: 排序之前数据表显示: sql语句: 1 select ROW_NUMBER() over(order by ...

最新文章

  1. 【python编程导论】我想和你探讨下如何去写好程序
  2. Elide 4.3.1 发布,雅虎开源的应用数据 API 搭建平台
  3. oracle的日志分析工具,oracle日志分析工具LogMiner使用(实战)
  4. HttpWatch截取网页数据的工具以及介绍
  5. scala spark 埋点统计_spark—1:WordCount(Python与Scala对照)
  6. 关于c语言中合法的数值常量
  7. mysql 约束 和索引_Mysql中索引和约束的示例语句
  8. 特洛伊木马程序_特洛伊木马Dridex的新变种可避免反病毒软件的检测
  9. restframework序列化解析详解(番外)
  10. 企业微信重磅更新!离职继承无需客户同意、群自动踢人、群成员去重...
  11. 解决安装 Bun 之后出现 zsh compinit: insecure directories, run compaudit for list. Ignore insecure directorie
  12. Unity的五个窗口面板
  13. 财务考PMP有用吗?
  14. MacBook Pro win7系统下使用 苹果鼠标 apple mouse
  15. HTML5相册,网页,模板,微信,制作,
  16. dump文件深度分析
  17. 赞美CSDN 我去年买了个登山包超耐磨。
  18. Oracle-08:连接查询
  19. Linux云计算【第一阶段】第四章:权限管理
  20. JAVA算法:回文字符串相关问题详解(回文字符串总结)

热门文章

  1. Unable to load print control in ReportingService
  2. ebook site
  3. 有关ArrayList增加Map引发的一个BUG
  4. cassandra学习笔记一
  5. 聊聊 scala 的模式匹配 1
  6. 如何利用wireshark对TCP消息进行分析
  7. 7.Git的版本退回
  8. Bootstrap3.0学习第十一轮(输入框组)
  9. html5实现饼图和线图-我们到底能走多远系列(34)
  10. [转]IDE之zend studio: zend studio8使用感受